firebase - FieldValue.arrayRemove() 根据属性值从对象数组中删除一个对象

标签 firebase flutter dart google-cloud-firestore

我有一个具有以下结构的文档:

{
    "email" : "a@gmail.com",
    "value" : 100,
    "children" : [
                  {
                    "email" : "b@gmail.com",
                    "value" : 100
                  },
                  {
                    "email" : "b@gmail.com",
                    "value" : 200
                  }
                 ]
}

我想删除电子邮件中的所有元素 b@gmail.com来自 children大批。如果我像这样传递要删除的整个对象,我可以删除一个项目:
FieldValue.arrayRemove(childObject)
但我想要两个带有电子邮件的对象 b@gmail.com即将被删除。无论如何使用 FieldValue.arrayRemove() 来实现这一点吗? ?

最佳答案

arrayRemove操作从数组中删除您指定的确切项目。无法传递部分对象并删除与部分信息匹配的所有数组项。您必须传入要删除的每个完整项目。

如果您还不知道这些项目是什么,您通常必须首先读取文档,遍历数组中的项目以删除它们,然后将修改后的数组写回文档。

关于firebase - FieldValue.arrayRemove() 根据属性值从对象数组中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694940/

相关文章:

android - 将 firebase 发布到 recyclerview android。没有数据显示

firebase - 在节点 14 运行时部署 Firebase 函数并增加内存

firebase - StreamBuilder Widget 需要处理掉吗?

dart - 如何使用 flutter 在移动应用程序中禁用多点触控

string - 为什么在 Dart 中声明字符串要大写?

ios - firebase google 或查询支持或任何替代解决方案

sqlite - Flutter - 从数据库中获取记录并显示在 ListView Builder 中

java - 二进制数据的未知编码/序列化

dart - 如何在 flutter 中水平居中文本?

dart - flutter : how to use focusNode property on TextField