問題陳述:
您在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中文網其他相關文章!