firebase - 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?

标签 firebase dart flutter google-cloud-firestore

我在文档中有字段users,这个字段包含数组中的两个元素。我必须检查特定的两个值是否在这个数组中。

首先,我为此使用了两次array-contains方法,但都发生了错误。

如何访问 Cloud Firestore 中数组字段的索引?

下面的代码是我的方法,但它不起作用:

QuerySnapshot querySnapshot = await sl.get<FirebaseAPI>().getFirestore()
      .collection('messages')
      .where('users'[0],isEqualTo: 'user1ID')
      .where('users'[1],isEqualTo: 'user2ID')
      .getDocuments();

simple firestore structure

最佳答案

无法在 Firestore 中根据数组中存在的元素的索引查询数据库。的确,您不能在查询中链接多个 array-contains 调用,但还有另一种解决方法可以帮助您实现同样的目的。所以你的数据库结构需要改变。因此,您可以使用映射而不是数组,您的模式应该类似于这样:

Firestore-root
   |
   --- messages (collection)
         |
         --- users (map)
              |
              --- user1ID: true
              |
              --- user2ID: true

现在像这样的查询将工作得很好:

QuerySnapshot querySnapshot = await sl.get<FirebaseAPI>().getFirestore()
    .collection('messages')
    .where('users.user1ID',isEqualTo: true)
    .where('users.user2ID',isEqualTo: true)
    .getDocuments();

关于firebase - 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55180156/

相关文章:

java - 构建 AAB 时出错 - Flutter (Android) - 完整性检查失败 : java. security.NoSuchAlgorithmException:算法 HmacPBESHA256 不可用

javascript - firebase firestore 和 grpc 中未建立连接错误

android - 如何自定义 firebase auth ui

android - 使用 Flutter 从 Firestore 获取数据以获取角色库主视图

flutter - 如何开发一个菜单,使当前路线保持在菜单的横向

Flutter 无法从另一个类调用异步函数

java - Firebase addValueEventListener 在其他 Activity 中持续监听

node.js - 为什么这些 promise 的拒绝是全局性的?

flutter - 在主题中设置 TextFromField 样式

右键单击 VSCode 时,Flutter::My Refactor 按钮不会出现