【问题标题】:Firestore query works with flutter but not with node.jsFirestore 查询适用于颤振,但不适用于 node.js
【发布时间】: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


【解决方案1】:

在 cmets 中找到答案。如果您需要按多个字段进行排序或搜索,请添加复合索引。

错误消息有一个链接,您可以在其中创建所需的索引。或者添加一个firestore.indexes.json 文件并使用firebase cli 从该文件部署索引。

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2011-05-20
    • 2020-04-13
    • 2021-01-01
    相关资源
    最近更新 更多