2015-01-13 2 views
0

사용자가 개인 메시지를 친구들에게 보낼 수있는 Android 앱을 만들고 싶습니다. 내 GAE 응용 프로그램에 대한 Java 사용하고 있습니다.GAE 개인 메시지 용 Datastore 엔터티

좀 더 정확하게 말하면, 사용자 A가 3 명의 친구 B, C 및 D를 가지고 있다면, 그 중 2 명 (B와 C)을 선택하고 D가 볼 수없는 스레드를 시작할 수 있기를 바랍니다. 이 스레드에서 A B와 C는 포럼과 같이 비동기식으로 대화 할 수 있습니다.

질문은 다음과 같습니다. 가장 효율적인 방식으로 해당 기준을 충족하는 방법으로 엔티티를 만드는 방법은 무엇입니까?

지금은 스레드와 메시지라는 두 개의 엔티티가 필요하다고 생각했습니다. 그러나 예를 들어 A가 데이터 저장소에 스레드 요청을 보낼 때 B와 C에 대한 참조를 어디에 추가해야하는지 모르겠습니다. 사용자 목록으로받는 사람 필드에 추가하면 사용자가 초대 된 모든 스레드를 요청하는 것이 너무 어려울 것으로 생각됩니다.

내가하고 싶은 것이 꽤 고전적이라 누구든지 나를 도울 수 있습니까?

답변

1
class User(ndb.Model): 
    pass 

class Thread(ndb.Model): 
    participants = ndb.KeyProperty(kind=User, repeated=True) 

class Message(ndb.Model): 
    thread = ndb.KeyProperty(kind=Thread) 
    user = ndb.KeyProperty(kind=User) 

# user's thread 
Thread.query(Thread.participants == user.key).fetch() 

# all thread messages 
Message.query(Message.thread == thread.key).fetch() 
+0

죄송합니다. 자바를 사용하고 있습니다. 나는 내 질문을 편집 할 것이다. – Kritias

+0

글쎄,이 데이터 모델은 Java에서도 작동해야합니다. –

+0

감사합니다.하지만 파이썬을 이해하지 못합니다. 다행히 누군가 Java에서 코드를 변환 할 수 있습니다. – Kritias

관련 문제