如何在Firestore中筛选具有特定订单查询的文档



背景

我正在尝试在我的社交媒体应用程序上实现一个阻止功能。目前,其中一个提要查询按照创建的时间戳按时间顺序对文档进行排序。

建议的解决方案

为了在苹果应用商店上发布,我们需要实现一个阻止功能。我认为很容易,在用户文档中创建一个具有字符串数组"的字段;blockedUsers"现在,当您查询字段时,使用Firestore支持的not in运算符,您可以得到一个文档列表,它们是:

  • not inblockedUsers数组
  • 有序by已完成时间戳
  • 由于分页原因limit到x

问题

但是,在阅读了innot in运算符的文档后,您不能按与要筛选的比较字段不同的字段对文档进行排序。在这种情况下,not in

https://firebase.google.com/docs/firestore/query-data/order-limit-data

问题

我有点不知道如何在结构上实现一个阻止的功能,该功能将过滤GlobalPosts集合中的文档,不包括阻止的用户,按时间顺序排列,并进行分页。

我很想听到任何建议的解决方案,不要担心,如果它打破了我们目前的模式,它可能会培养一些其他的想法,但保持我们目前的方案是更好的。

将其作为社区Wiki发布,因为它是基于Doug Stevenson对问题的评论:

由于您在文档中共享的限制,无论您如何构建数据,使用单个Firestore查询都不可能实现您想要做的事情。

因此,您需要多个查询和一些客户端排序或筛选的组合,这可能会比您想要的更昂贵。

最新更新