我在这里处理设计模式。 我正在创建一个拥有追随者和追随者的应用程序。类似于Twitter,Instagram,x-social-network。
基本上,当用户打开“主页”视图时,我需要调用Firebase函数,该函数应从Firestore数据库获取关注者的活动供稿(如twitter,insta等)。
我考虑过要做这样的事情:
对于此示例,假设用户A
跟着用户B
B
执行A
的供稿中应包含的操作时,我都会在B.feed
中添加一个新对象。像这样: B.feed['timestampId'] = { eventType: 'new-tweet', photoId: 123123};
A
打开“主页”视图时,我将调用“ getFeed” Firebase函数(这一步骤并不重要)。A
所关注的用户。A.following
用户(在本例中仅为B
),我将得到X.feed
对象。在这种情况下:B.feed
,我将其返回给应用程序。这是什么问题?
如果A
跟踪了多个用户(假设B
和C
),则常识表明我应该获得用户{{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()
次查询,其中n
是n
所关注的用户数。
A
等待所有这些承诺,然后返回所有这些调用中的admin.firestore().collection('users')
.where('id', '=', 'B')
.get()
admin.firestore().collection('users')
.where('id', '=', 'C')
.get()
。
感觉就像...我不知道...丑陋(在您可能想象的所有感官上)。
你们对如何实现这样的东西有更好的主意吗?