Javascript Firestore获取与值数组中的项匹配的任何值
在坚持最佳实践的同时,如何使用firestore进行一些关系查询,我面临着一点心理障碍。我正在创建一个feed功能,您可以在其中查看来自朋友的帖子feed。基本上,我的数据结构如下所示:Javascript Firestore获取与值数组中的项匹配的任何值,javascript,google-cloud-firestore,Javascript,Google Cloud Firestore,在坚持最佳实践的同时,如何使用firestore进行一些关系查询,我面临着一点心理障碍。我正在创建一个feed功能,您可以在其中查看来自朋友的帖子feed。基本上,我的数据结构如下所示: Friends (collection) -friend_doc ...data friends_uid: [uid1, uid2] Posts (collection) -post_doc ...data posted_by: uid2 基本上,我正在进行查询,以获取friends\u u
Friends (collection)
-friend_doc
...data
friends_uid: [uid1, uid2]
Posts (collection)
-post_doc
...data
posted_by: uid2
基本上,我正在进行查询,以获取friends\u uid包含我的uid(本例中为uid1)的所有好友。然后,一旦我将所有好友uid映射到一个数组,我想进行firestore查询,以获取POST_by字段等于该好友uid数组中任何uid的帖子。我还没能制造出这样的东西
我知道在friends uid的字符串数组中循环并对每个uid进行查询似乎是最方便的,如:
listOfUids.forEach(async (item) => {
const postQuerySnapshot = await firestore()
.collection('posts')
.where('uid', '==', item)
.get();
results.push(postQuerySnapshot.docs);
});
但这对于分页和限制数据来说是非常有问题的,因为我可能会收到大量的帖子。我可能只是对这段代码太深入,缺少一个明显的解决方案,或者我的数据结构有点缺陷。如有任何见解,将不胜感激 我认为您正在寻找处于状态的
。这样,您最多可以传递10个值,它将返回字段与这些值中任何一个匹配的所有文档
有关这方面的更多信息,请参阅上的Firebase文档
如果您有10个以上的UID,您仍然需要执行多个查询并在客户端合并结果。我认为您正在寻找处于
状态的。这样,您最多可以传递10个值,它将返回字段与这些值中任何一个匹配的所有文档
有关这方面的更多信息,请参阅上的Firebase文档
如果您有10个以上的UID,您仍然需要执行多个查询并在客户端合并结果。对于任何正在研究如何在firestore中实现类似“提要”类型功能的人,我最终解决了这个问题:
我在我的数据结构中添加了一个users\u feed集合以及posts集合,并处理在云函数内部生成feed的问题。users_提要集合充当中介,因此客户端只需要从中提取数据,而不需要生成提要所有的重载都发生在云功能中
在云功能中,每当发布(onCreate)或更新(onUpdate)帖子时,它都会获取发布该帖子的人的好友列表,并使用批写将其写入用户的feed集合中的所有feed
我发现另一篇文章在提出结构时非常有用:对于任何正在研究如何在firestore中实现类似“提要”类型功能的人来说,我最终解决了这个问题:
我在我的数据结构中添加了一个users\u feed集合以及posts集合,并处理在云函数内部生成feed的问题。users_提要集合充当中介,因此客户端只需要从中提取数据,而不需要生成提要所有的重载都发生在云功能中
在云功能中,每当发布(onCreate)或更新(onUpdate)帖子时,它都会获取发布该帖子的人的好友列表,并使用批写将其写入用户的feed集合中的所有feed
我发现另一篇文章在提出结构时非常有用: