gpt4 book ai didi

firebase - 带 orderBy 的 firestore 相等过滤器

转载 作者:行者123 更新时间:2023-12-02 13:19:59 25 4
gpt4 key购买 nike

我正在使用 Firestore,并且我有非常简单的带有相等过滤器的查询,其中我需要执行 orderBy (因为我必须限制结果)。我无法将 startAfter 与 orderBy 一起使用,因为 Firebase 在这种情况下会引发错误。

FirebaseError: Too many arguments provided to Query.startAfter(). The number of arguments must be less than or equal to the number of Query.orderBy() clauses

但是,我无法将 orderBy 与相等过滤器一起使用。示例:

query.where('tags.supporter', '==', true).orderBy('tags.supporter');

这会引发 Firebase 错误:

FirebaseError: Order by clause cannot contain a field with an equality filter tags.supporter

有趣的是,这很好用:-

query.where('tags.supporter', '<=', true).where('tags.supporter', '>=', true)

^ 这有效并给了我tags.supporter == true,但我不能将它与多个过滤器一起使用。

示例:

query.where('tags.supporter', '==', true).where('tags.volunteer', '==', true)

^ 有效,但我无法在没有 orderBy 的情况下使用 startAfter 。但如果我尝试使用 orderBy,我会收到错误:-

query.where('tags.supporter', '==', true).where('tags.volunteer', '==', true).orderBy(...)

^ 不起作用!

我无法执行 <= >= hack,因为它需要复合索引,但我无法设置它,因为这些是用户添加的标签。

有什么想法吗?

如果这确实是一个限制,那么应该在文档中明确提及,因为它会影响我的决定。现在,如果这确实是一个限制,我将不得不在自己的应用程序中构建大量逻辑来过滤结果。

最佳答案

经过多次尝试和错误,我找到了答案。

您可以使用.orderBy(firebase.firestore.FieldPath.documentId())。这允许您使用多个相等过滤器,并且仍然执行 limit 和 startAfter。

关于firebase - 带 orderBy 的 firestore 相等过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57830082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com