这是我的查询:
db.requests
.where('userId', '==', uid)
.where('placeId', '==', placeId)
.where('endTime', '>=', Date.now())
.where('isFullfilled', '==', false);
所以我手动把这个索引写在firestore.indexes.json
:
{
"collectionGroup": "requests",
"queryScope": "COLLECTION",
"fields": [
{
"fieldPath": "userId",
"order": "ASCENDING"
},
{
"fieldPath": "placeId",
"order": "ASCENDING"
},
{
"fieldPath": "endTime",
"order": "ASCENDING"
},
{
"fieldPath": "isFullfilled",
"order": "ASCENDING"
}
]
},
运行时,出现错误“此查询需要索引”。自动创建的索引如下所示:
另一方面,我手动创建的索引在 GUI 中如下所示:
为什么它不接受我自己的索引?字段的顺序重要吗?我没有对查询结果进行排序。索引创建有什么模式吗?这真的很令人困惑,我在文档中找不到任何相关内容。必须针对云数据库运行每个查询才能获得正确的复合索引字段顺序确实很烦人。