首頁 > web前端 > js教程 > 如何更新 Firestore 陣列中的巢狀欄位?

如何更新 Firestore 陣列中的巢狀欄位?

DDD
發布: 2024-11-14 19:37:02
原創
233 人瀏覽過

How Can I Update a Nested Field in an Array in Firestore?

Firestore:更新巢狀數組欄位

問題陳述:

您在Firestore 中有一個文檔,其中的數組字段包含對象。您需要更新數組內物件內的特定欄位。但是,嘗試直接使用點符號 (items.${index}.meta.description) 進行更新無法正常運作。

解:

Firestore 目前不支援直接更新索引陣列中的特定元素。相反,請考慮以下替代方案:

選項1:重寫整個數組

不要更新特定字段,而是從文檔中讀取整個數組,製作所需的內容修改內存,然後整體更新修改後的數組字段:

const key = `items.${this.state.index}.meta`;
let items = this.state.items;
items[this.state.index].meta.description = 'hello bar';

this.design.update({
  [key]: items,
})
登入後複製

這種方法有效地重寫了整個數組,如果數組很大,這可能會效率低下。

選項 2:使用陣列運算

雖然 Firestore 不允許直接更新現有陣列元素,但您仍然可以使用陣列運算新增或移除元素。例如,要將新元素追加到陣列中:

this.design.update({
  items: FieldValue.arrayUnion({
    name: 'New Item',
    meta: {
      image: 'def.png',
      description: 'hello new item',
    }
  })
})
登入後複製

要刪除元素,請使用 FieldValue.arrayRemove()。

建議:

如果陣列相對較小,選項 1(重寫整個陣列) 可以是簡單的方法 解。但是,如果陣列很大,選項 2(使用陣列操作) 效率更高,因為它可以避免覆蓋整個陣列。

以上是如何更新 Firestore 陣列中的巢狀欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板