【发布时间】:2021-10-06 02:39:39
【问题描述】:
我尝试对 Flutter 和 node.js 使用相同的查询。在颤振上它可以工作 - 但在 node.js 上,API 告诉我们需要索引。现在我不知道如何解决我在 node.js 上的问题。
Firestore 集合:
{
name: "NameA",
members: {
"A7bn2": { role: "owner", "approved": true },
"b1aw1": { role: "owner", "approved": true },
}
}
没有用 :-(
return this.firestore.collection("projects")
.where(`members.${this.auth.currentUser.uid}.role`,
'==', 'owner')
日志消息:
Uncaught Error in snapshot listener: FirebaseError: The query requires an index. You can create it here
建议的索引(带有 uid)
members.I21HsjQCL7sDgb34CgYi1.role Ascending name Ascending
查询适用于 dart/flutter
.where('members.${_auth.currentUser!.uid.toString()}.role',
isEqualTo: 'owner')
.snapshots()
【问题讨论】:
-
不起作用是什么意思?是否有任何错误或返回的数据无关?
-
您应该会在控制台错误中看到一个链接,该链接指向 Firebase 站点,您可以在其中添加所需的索引。它告诉您有关所需索引的什么信息?
-
.. 这就是您的查询中的全部内容吗?也许你也在使用 .orderBy 什么的?每当您按多个字段进行搜索或排序时,都需要一个复合索引。
-
@funkizer 谢谢 - 顺序是不同的。在 node.js 上,我添加了 sort by ...
标签: node.js firebase flutter google-cloud-firestore