繁体   English   中英

在 React js 中更新 Firebase 实时数据库中的对象数组

[英]Updating Array of Objects in Firebase Realtime Database in React js

我在 Firebase 的实时数据库中更新对象数组的某些属性时遇到问题。

我的 object 如下所示(见图)。

现在我想更新第二个参与者 object 的 IsComing 属性。

在此处输入图像描述

目前我使用 updateIsComming() function,但这不是很有说服力,因为我必须重写整个 object。

 function updateIsComming() {
   
    const db = getDatabase();
    update(ref(db, " your_path/EventModel/" + modelkey ), {
      Location: "London",
      Participants: [
        { Name: "Bella2", IsComming: "true" },
        { Name: "Tom", IsComing: "true" },
      ],
    });

相反,我只想引用该数组中的特定道具。 例如

参与者[1].IsComming = false;

有什么方法可以直接访问 object 的特定数组。

Arrays 作为数据结构不推荐在 Firebase 实时数据库中使用。 要了解原因,我建议阅读Firebase 中的最佳实践:Arrays

这样做的原因之一是您需要读取数组以确定要更新的项目的索引。 模式是:

  1. 从数据库中读取数组。
  2. 在您的应用程序代码中更新数组中的必要项。
  3. 将更新后的数组写回数据库。

正如您已经发现的那样,这并不理想。 正如 NoSQL 数据库中常见的那样,请考虑更适合用例的替代数据结构。

在这种情况下,要考虑的替代数据结构是:

Participants: {
  "Bella2": true,
  "Tom": true
}

在那里,我们使用参与者的名字作为键,这意味着:

  • 每个参与者只能在 object 中出现一次,因为 object 中的密钥根据定义是唯一的。
  • 您现在可以通过用户名更新用户状态: update(db, "your_path/EventModel/" + modelkey + "/Participants/Tom", false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM