簡體   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