google-app-engine - 在 Appengine 上将帖子标记为已读

标签 google-app-engine go google-cloud-datastore

我目前正在设计一个在结构上类似于 twitter/jaiku/reddit 的应用程序。基本上有点赞和反对的小帖子,它们像reddit一样按分数和时间排序。

我已经完成了所有这些工作,但现在我们的要求发生了一些变化,我们需要用户能够将帖子标记为“已读”。这将使该帖子不再显示在该用户的供稿中。我可以为 (User, Post) 的每个元组使用 Read 实体对其进行建模,但这需要大量工作才能找到该表中“不”存在的帖子。或者我可以反转这种关系,这样我就可以为每个未读的帖子创建一个实体,这样就可以更容易地找到表中“确实”存在的帖子......但是我需要在这个表中创建一个条目每次发帖时的每个用户。这不会很好地扩展。

我的问题是:我将如何在 Appengine 的数据存储区中对此类负面信息建模?如果重要的话,我正在使用 go 运行时,但任何运行时的答案都很好。

最佳答案

这将是一个多对多的关系。 This article描述了如何对不同类型的关系建模,包括多对多。唯一的问题是,我不确定您是否应该在帖子上存储用户已读帖子列表或已阅读帖子的用户列表,因为列表在不同情况下可能会变大。如果帖子相对私密,很多人看不到,您可以在帖子模型中存储用户 key 列表。但是,如果一个帖子可以被成千上万的人看到,那么最好在用户上存储一个帖子列表,因为可能不会有很多用户拥有数千个已阅读的帖子。另一种选择可能是丢弃旧帖子,或者只丢弃它们的阅读状态。

关于google-app-engine - 在 Appengine 上将帖子标记为已读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054544/

相关文章:

python - 如何以编程方式确定 ndb 属性是否为多值

python - 在 Google App Engine 中,如何创建具有特定 ID 的模型?

java - Google Cloud Datastore - Java - GQLQuery 游标

python - 重复的 ndb.StructuredProperty 的验证器未能触发

android - 使用 XMPP 在 Android 上推送用户通知 - 以任何方式定位这些用户,这样他们就不会去 Google Talk 等

java - 使用 Cloud Tools for Eclipse 部署包含 p12 文件的 App Engine 应用程序

javascript - 使用 Node.js 对应用程序引擎进行本地单元测试

go - 当字段实现 UnmarshalJSON 时,Unmarshal 嵌入式字段指针会出现困惑

json - 将yaml转换为不带结构的json

go - 从新创建的文件中读取