背景
我正在尝试在我的社交媒体应用程序上实现一个阻止功能。目前,其中一个提要查询按照创建的时间戳按时间顺序对文档进行排序。
建议的解决方案
为了在苹果应用商店上发布,我们需要实现一个阻止功能。我认为很容易,在用户文档中创建一个具有字符串数组"的字段;blockedUsers"现在,当您查询字段时,使用Firestore支持的not in
运算符,您可以得到一个文档列表,它们是:
not in
blockedUsers数组- 有序
by
已完成时间戳 - 由于分页原因
limit
到x
问题
但是,在阅读了in
和not in
运算符的文档后,您不能按与要筛选的比较字段不同的字段对文档进行排序。在这种情况下,not in
。
https://firebase.google.com/docs/firestore/query-data/order-limit-data
问题
我有点不知道如何在结构上实现一个阻止的功能,该功能将过滤GlobalPosts集合中的文档,不包括阻止的用户,按时间顺序排列,并进行分页。
我很想听到任何建议的解决方案,不要担心,如果它打破了我们目前的模式,它可能会培养一些其他的想法,但保持我们目前的方案是更好的。
将其作为社区Wiki发布,因为它是基于Doug Stevenson对问题的评论:
由于您在文档中共享的限制,无论您如何构建数据,使用单个Firestore查询都不可能实现您想要做的事情。
因此,您需要多个查询和一些客户端排序或筛选的组合,这可能会比您想要的更昂贵。