java - 用于私有(private)消息的 GAE 数据存储实体

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

我想创建一个 Android 应用程序,其中用户只能通过向 friend 发送私有(private)消息来进行交流。我在我的 GAE 应用程序中使用 java。

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

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

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

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

最佳答案

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

关于java - 用于私有(private)消息的 GAE 数据存储实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27920484/

相关文章:

java - Hibernate 不承认持久的 getter/setter 属性

java - HttpURLConnection setConnectTimeout() 没有效果

java - JDK 和 JRE 错误

html - GAE GO - html 模板和数据安全

java - 如何通过分隔逗号(,)来存储数据库中的选择框值?

java - 在 java spring web 应用程序中保存安全信息的最佳位置

java - 在java中获取列表的最后X个项目

android - 在 Android 上发出 Ajax 请求返回 No Transport 错误

android - 使用 POST 从 API 获取 JSON 对象

google-app-engine - 自定义域不适用于谷歌应用引擎