带有.where条件的Firestore查询



我使用以下查询:

Query postsQuery = FirebaseFirestore.instance.collection('posts')
.where('postType', isNotEqualTo: 'Discussion') //post types - Simple, featured, discussion
.orderBy('createdAt', descending: true)
.where('group', isEqualTo: groupName) //india, usa, pakistan
.limit(perPage);

如果我删除这个,查询运行:

.where('postType', isNotEqualTo: 'Discussion')
有人知道我在这里做什么吗?

您似乎没有声明与您的查询相对应的Firestore索引。

如文档中所述:

云Firestore确保查询性能要求的指数每一个查询。最基本查询所需的索引如下自动为您创建。当你使用和测试你的应用程序时,CloudFirestore生成错误消息,帮助您创建附加的.

如果您尝试使用没有映射到现有索引的range子句执行复合查询,则会收到一个错误。错误消息包括一个在Firebase控制台创建缺失索引的直接链接.

因此,将catch()块添加到用于执行查询的代码中,您将在错误消息中获得链接。注意:此链接将通过web浏览器打开(一次),而不是通过Flutter应用程序。

最新更新