Firebase 如何修复firestore错误,该错误抱怨相等筛选器上的order by

Firebase 如何修复firestore错误,该错误抱怨相等筛选器上的order by,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,这很有效 collection .where('startDate', '>=', startDate) .get(); 这将导致错误 collection .where('startDate', '>=', startDate) .where('startDate', '<=', endDate) .get(); 错误 错误:order by子句不能包含具有相等筛选器startDate的字段 我不明白这个错误,也不知道如何修复它。我

这很有效

collection
    .where('startDate', '>=', startDate)
    .get();
这将导致错误

collection
    .where('startDate', '>=', startDate)
    .where('startDate', '<=', endDate)
    .get();
错误 错误:order by子句不能包含具有相等筛选器startDate的字段


我不明白这个错误,也不知道如何修复它。我在firestore中的数据类型是日期。文档允许范围查询,只要它是同一个字段,所以我不确定为什么不起作用。

结果表明startDate/endDate变量是一个整数,一旦我将其更改为日期对象,查询就开始起作用

结果表明startDate/endDate变量是一个整数,一旦我将其更改为日期对象,查询就会开始工作

如果startDate和endDate相同,也会出现该错误,例如:

    let startDate = new Date('1980-12-01')
    let endDate = new Date('1980-12-01')
解决办法是:

    let startDate = new Date('1980-12-01 00:00:00')
    let endDate = new Date('1980-12-01 23:59:59')

如果startDate和endDate相同,也会出现该错误,例如:

    let startDate = new Date('1980-12-01')
    let endDate = new Date('1980-12-01')
解决办法是:

    let startDate = new Date('1980-12-01 00:00:00')
    let endDate = new Date('1980-12-01 23:59:59')

我得到了相同的错误,因为我在两个where子句中使用了完全相同的字符串

.where("field", ">=", "somestring").where("field", "<=", "somestring")

我得到了相同的错误,因为我在两个where子句中使用了完全相同的字符串

.where("field", ">=", "somestring").where("field", "<=", "somestring")

如果order by和where等于同一个字段,则该字段不应为布尔字段。实际上,这不是必需的。因为如果添加等于,则会得到true或false。这就是为什么会出现错误

例:


如果你的问题在上面。如果order by和where equal的字段相同,则它将不起作用。

。它不应该是布尔字段。实际上它不是必需的。因为如果添加equals,则会得到true或false。。这就是为什么会出现错误的原因

例:

如果你的问题在上面。这行不通

Firestore firestore_db = getFirestoreInstance();
Query query=firestore_db.collection("collection").orderBy("isAllow",Direction.DESCENDING).whereEqualTo("isAllow", false);