gpt4 book ai didi

javascript - 在 Firestore 中,如何查询在某个日期范围内创建的项目并按不同字段排序?

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

我正在尝试创建“上周/月/年的热门帖子”的查询。我认为这很简单,但我遇到了 Firestore 查询规则的限制。

这是我最想运行的查询:

db
.collection(MY_COLLECTION)
.where('created', '>', new Date(fromDate))
.orderBy('score', 'desc')

这给了我这个错误:

FirebaseError: Invalid query. You have a where filter with an inequality (<, <=, >, or >=) on field 'created' and so you must also use 'created' as your first Query.orderBy(), but your first Query.orderBy() is on field 'score' instead.

对于这些类型的查询是否有已知的策略或解决方法?

最佳答案

要解决您收到的错误,您应该首先按 created 字段进行排序,如下所示:

db
.collection(MY_COLLECTION)
.where('created', '>', new Date(fromDate))
.orderBy('created', 'desc')
.orderBy('score', 'desc')

这在 documentation 中指出:

If you have a filter with a range comparison (<, <=, >, >=), your first ordering must be on the same field.

请注意,您需要为此查询创建索引。为此,只需运行一次查询,然后在收到的错误消息中您将找到要调用以创建索引的 URL。

<小时/>

如果要查询两个日期之间的所有文档,可以使用如下查询:

db
.collection(MY_COLLECTION)
.where('created', '>', new Date(fromDate))
.where('created', '<=', new Date(toDate))
.orderBy('created', 'desc')
.orderBy('score', 'desc')

关于javascript - 在 Firestore 中,如何查询在某个日期范围内创建的项目并按不同字段排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61304200/

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