在如何与firestore进行一些关系查询同时坚持最佳实践方面,我面临着一些心理障碍。我正在创建一个Feed功能,您可以在其中查看来自朋友的帖子的Feed。从本质上讲,我的数据结构如下:Friends (collection)-friend_doc ...data friends_uid: [uid1, uid2]Posts (collection)-post_doc ...data posted_by: uid2基本上,我正在进行查询以获取friends_uid包含我的uid(在本例中为uid1)的所有朋友。然后,一旦我将所有朋友的uid映射到一个数组,我想做一个firestore查询,以获得posted_by字段等于该朋友uid数组中的任何uid的帖子。我还没有能够做出类似的事情。我知道循环访问朋友uid的字符串数组并为每个数组进行查询似乎最方便,例如: listOfUids.forEach(async (item) => { const postQuerySnapshot = await firestore() .collection('posts') .where('uid', '==', item) .get(); results.push(postQuerySnapshot.docs); });但这对于分页和限制数据来说是非常成问题的,因为我可能会收到大量的帖子。我可能只是太深入这个代码,缺少一个明显的解决方案,或者我的数据结构有些缺陷。任何见解将不胜感激。
2 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
对于任何正在寻找如何在firestore中实现类似的“feed”类型功能的人来说,这就是我最终如何解决它:
我在数据结构以及帖子集合中添加了一个users_feed集合,并处理了在云函数内部生成源的问题。users_feed集合充当中介,因此客户端只需要从中提取数据,而无需生成源。所有繁重的工作都发生在云功能中。
在云函数中,每当发布(onCreate)或更新(onUpdate)帖子时,它都会获取发布该帖子的人的朋友列表,并将其写入他使用批处理写入集合users_feed中的所有提要中。
我发现另一篇文章在提出结构方面非常有用:哪个是用于获取社交媒体源的更优化的Firestore模式?
添加回答
举报
0/150
提交
取消