私有消息的GAE数据存储实体

时间:2015-01-13 10:54:53

标签: java android google-app-engine google-cloud-datastore

我想创建一个Android应用,用户只能通过向朋友发送私信来进行通信。我正在使用java作为我的GAE应用程序。

更确切地说,如果用户A有三个朋友B,C和D,我希望他能够选择其中两个(比如B和C)并启动D看不到的线程。在该线程中,A B和C可以像论坛一样以异步方式进行通信。

问题是:如何让我的实体以最有效的方式满足这些标准?

现在,我想我需要两个实体:线程和消息。但是,例如,当A将在数据存储区中发送线程请求时,我不知道在哪里可以添加对B和C的引用。如果我将其作为用户列表添加到字段收件人中,我认为用户请求邀请的所有线程的时间太长。

我知道我想要做的是非常经典的,所以有人可以帮助我吗?

1 个答案:

答案 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()