Google cloud firestore 使用'建立社交时间线;在';查询

Google cloud firestore 使用'建立社交时间线;在';查询,google-cloud-firestore,Google Cloud Firestore,我正在使用Firestore构建一个模仿Facebook的社交应用程序。我看到很多类似于Twitter的帖子都采用了followerd/followers的方式,但对于使用好友的应用程序来说,这并不适合 我的数据模型将有一个顶级集合(“posts”),每个post都有海报的用户ID(“UserID”)。为了构建时间线,我考虑简单地使用新的ish“in”查询: var timelineQuery = postsRef .where('UserID', whereIn: [user_123,

我正在使用Firestore构建一个模仿Facebook的社交应用程序。我看到很多类似于Twitter的帖子都采用了followerd/followers的方式,但对于使用好友的应用程序来说,这并不适合

我的数据模型将有一个顶级集合(“posts”),每个post都有海报的用户ID(“UserID”)。为了构建时间线,我考虑简单地使用新的ish“in”查询:

var timelineQuery = postsRef
    .where('UserID', whereIn: [user_123, user_456])
    .orderBy('timestamp');
“in”查询的数组大小限制为10,但我的应用程序非常专业,所以即使我有100多万用户,我的普通用户也可能只有几个朋友。对于我罕见的拥有40或50个朋友的用户,我可以运行此查询4或5次,在第一次查询中有更多活跃的朋友,并在后续结果出现时更新时间线


这是否合理的做法?我没有看到任何使用它的例子,所以我猜我遗漏了什么?

是的,这听起来是一个合理的方法


常见的替代方法是反转数据模型,为数据库中的每个用户构建一堵明确的“墙”。因此,在这种情况下,当用户发布帖子时,您会找到他们的所有追随者,然后将新帖子写到每个追随者的“墙上”。这使得书写更复杂、更慢,但使阅读更简单、更具可扩展性。

谢谢@Frank!是的,我想我会为MVP编写代码,然后在将来考虑“墙”,如果将来需要更可扩展的。