Problemstellung:
Sie haben ein Dokument in Firestore mit einem Array-Feld, das Folgendes enthält: Objekte. Sie müssen ein bestimmtes Feld innerhalb eines Objekts innerhalb des Arrays aktualisieren. Der Versuch, direkt mit der Punktnotation (items.${index}.meta.description) zu aktualisieren, funktioniert jedoch nicht ordnungsgemäß.
Firestore unterstützt derzeit keine direkte Aktualisierung von a spezifisches Element in einem indizierten Array. Ziehen Sie stattdessen die folgenden Alternativen in Betracht:
Option 1: Das gesamte Array neu schreiben
Anstatt das spezifische Feld zu aktualisieren, lesen Sie das gesamte Array aus dem Dokument und machen Sie das Gewünschte Änderung im Speicher, dann aktualisieren Sie das geänderte Array-Feld als Ganzes:
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, })
Dieser Ansatz schreibt effektiv das gesamte Array neu, was möglicherweise ineffizient ist, wenn das Array ist groß.
Option 2: Array-Operationen verwenden
Während Firestore keine direkten Aktualisierungen vorhandener Array-Elemente zulässt, können Sie dennoch Elemente mithilfe von Array-Operationen hinzufügen oder entfernen . Um beispielsweise ein neues Element an das Array anzuhängen:
this.design.update({ items: FieldValue.arrayUnion({ name: 'New Item', meta: { image: 'def.png', description: 'hello new item', } }) })
Um ein Element zu entfernen, verwenden Sie FieldValue.arrayRemove().
Empfehlung:
Wenn das Array relativ klein ist, kann Option 1 (das gesamte Array neu schreiben) eine sein einfache Lösung. Wenn das Array jedoch groß ist, ist Option 2 (Verwendung von Array-Operationen) effizienter, da dadurch das Überschreiben des gesamten Arrays vermieden wird.
Das obige ist der detaillierte Inhalt vonWie kann ich ein verschachteltes Feld in einem Array in Firestore aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!