我想创建一个Android应用,用户只能通过向朋友发送私信来进行通信。我正在使用java作为我的GAE应用程序。
更确切地说,如果用户A有三个朋友B,C和D,我希望他能够选择其中两个(比如B和C)并启动D看不到的线程。在该线程中,A B和C可以像论坛一样以异步方式进行通信。
问题是:如何让我的实体以最有效的方式满足这些标准?
现在,我想我需要两个实体:线程和消息。但是,例如,当A将在数据存储区中发送线程请求时,我不知道在哪里可以添加对B和C的引用。如果我将其作为用户列表添加到字段收件人中,我认为用户请求邀请的所有线程的时间太长。
我知道我想要做的是非常经典的,所以有人可以帮助我吗?
答案 0 :(得分: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()