我在我的移动应用上使用Cloud Firestore。我想从我关注的用户那里获取内容。现在那些:
所以我正在尝试以下查询来获取我关注的人的内容。
ref = FirebaseFirestore.getInstance().collection("topics");
ref.whereEqualTo("username","user1");
ref.whereEqualTo("username","user2");
但是当我使用此查询时,它只显示来自第一个用户(user1)的帖子。
另外如果我关注10K用户。从他们那里获得最新帖子的最佳方式是什么?
答案 0 :(得分:3)
Firestore不支持您尝试执行的那种查询。您假设添加更多对whereEqualTo()的调用将像逻辑OR一样应用,并且将返回与任何条件匹配的任何文档。在Firestore中,添加更多条件是逻辑AND,意味着所有条件必须为true才能匹配文档。
您必须重新构建数据库才能支持您要执行的查询类型。这对于noSQL类型的数据库来说非常常见。没有一种结构支持各种查询。在您的情况下,您需要为每个用户记录他们关注的其他用户,并查询该用户以获得您想要的内容。您可能需要执行多个查询才能获得案例所需的一切。
答案 1 :(得分:1)
有两种方法可以解决这个问题。第一种方法是使用Firebase的云功能来侦听用户创建的任何文档,然后调用一个方法,该方法将创建的文档副本发送给每个关注的用户。 第二个是Doug Stevenson提到的,基本上你必须创建一个包含你所关注的所有用户的集合或文档,你可以从中调用每个用户来获取你的数据。