【问题标题】:Best way to filter out a subset of document IDs with firebase/firestore JS SDK?使用 firebase/firestore JS SDK 过滤掉文档 ID 子集的最佳方法?
【发布时间】:2020-11-04 04:50:03
【问题描述】:

我想就如何使用 Firebase JS SDK(例如,在 React 中)实现以下目标达成一些社区共识:

假设我有一个集合 users 并且我想分页 users 没有与 ID 子集匹配的文档 ID (O(100-1000))。这个排除的 ID 子集是动态的,基于经过身份验证的用户。

not in 查询似乎最多只支持 10 个条目,所以这是不可能的。

似乎也无法在客户端获取所有文档 ID 和过滤器,至少不是in the 'firebase' JS SDK

我能想到的唯一解决方法是拥有一个包含所有 users 文档 ID 的数组的文档,在本地拉取该文档并在本地执行过滤/分页逻辑。这里的限制是一个文档最多可以有 1MB,所以实际上单个文档最多可以存储 O(10K) 个 ID。

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    Firestore 有一组特殊的分页方法,可能对您有用。这些被称为“查询游标”。

    您可以使用它们来定义起点startAt()startAfter() 并定义终点endAt()endBefore()。此外,如果需要,可以将它们与limit 方法结合使用。

    我强烈建议您查看此tutorial。在这里,您可以找到解释问题的快速视频以及所有流行语言的大量示例。

    【讨论】:

    • 我了解如何在不进行任何过滤的情况下使用分页,但如果我想过滤出 100-1000 个文档 ID 的列表,然后再分页,我将如何使用 Firebase 的 API 来实现?
    • 我认为您需要重组数据库。您建议的数组,或者您可以将具有布尔值的字段添加到您想要包含并过滤该字段的每个用户。
    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多