如何使用Firestore实施“ Twitter提要模式”

时间:2019-02-25 01:50:07

标签: firebase google-cloud-firestore google-cloud-functions

我在这里处理设计模式。 我正在创建一个拥有追随者和追随者的应用程序。类似于Twitter,Instagram,x-social-network。

基本上,当用户打开“主页”视图时,我需要调用Firebase函数,该函数应从Firestore数据库获取关注者的活动供稿(如twitter,insta等)。

我考虑过要做这样的事情:

对于此示例,假设用户A跟着用户B

  1. 每次用户B执行A的供稿中应包含的操作时,我都会在B.feed中添加一个新对象。像这样:

B.feed['timestampId'] = { eventType: 'new-tweet', photoId: 123123};

  1. 当用户A打开“主页”视图时,我将调用“ getFeed” Firebase函数(这一步骤并不重要)。
  2. Firebase函数“ getFeed”将获得A所关注的用户。
  3. 然后,对于每个A.following用户(在本例中仅为B),我将得到X.feed对象。在这种情况下:B.feed,我将其返回给应用程序。

这是什么问题? 如果A跟踪了多个用户(假设BC),则常识表明我应该获得用户{{1}的.feed }和B。 以旧的方式,使用SQL,我将执行类似“在SELECT_FEED WHERE user_id IN('B','C')”的操作。但是,您可能知道,Firestore调用中没有C

意思是,我做不到:

OR

因此,我实际上应该做的是调用admin.firestore().collection('users') .where('id', '=', 'B') .where('id', '=', 'C') .get() 次查询,其中nn所关注的用户数。

A

等待所有这些承诺,然后返回所有这些调用中的admin.firestore().collection('users') .where('id', '=', 'B') .get() admin.firestore().collection('users') .where('id', '=', 'C') .get()

感觉就像...我不知道...丑陋(在您可能想象的所有感官上)。

你们对如何实现这样的东西有更好的主意吗?

0 个答案:

没有答案