Heim >Web-Frontend >js-Tutorial >Wie aktualisiere ich ein einzelnes Element in einem Array-Feld in Firestore?
Einzelnes Element in einem Array-Feld in Firestore aktualisieren
In der FirebaseFirestore-Dokumentation werden Möglichkeiten zur Interaktion mit Array-Feldern beschrieben, einschließlich des Hinzufügens oder Entfernens von Elementen. Es fehlt jedoch eine Methode zum direkten Aktualisieren eines Elements innerhalb des Arrays.
Für ein Dokument wie:
{ name: 'Foo', items: [ { name: 'Bar', meta: { image: 'xyz.png', description: 'hello world' } }, { name: 'Rawr', meta: { image: 'abc.png', description: 'hello tom' } } ] }
Um eine verschachtelte Eigenschaft wie items[0].meta.description zu ändern, Der folgende Ansatz funktioniert nicht:
const key = `items.${this.state.index}.meta.description`; const property = `hello bar`; this.design.update({ [key]: property }).then(() => { console.log("done") }).catch(function(error) { message.error(error.message); });
Es werden alle Eigenschaften im Ziel-Array-Index entfernt und nur die Beschreibung beibehalten Eigenschaft.
Das Umschreiben des gesamten Objekts ist ebenfalls nicht wünschenswert:
const key = `items.${this.state.index}.meta`; const property = e.target.value; let meta = this.state.meta; meta[e.target.id] = property; this.design.update({ [key]: meta }).then(() => { this.setState({ [key]: meta }) }).catch(function(error) { message.error(error.message); });
Es konvertiert das gesamte Array „items“ in ein Objekt.
Lesen Sie stattdessen das Array aus dem Dokument, nehmen Sie Änderungen im Speicher vor und aktualisieren Sie das gesamte geänderte Array-Feld:
const docRef = firestore.collection('collection').doc('document'); docRef.get().then(doc => { const items = doc.data().items; items[0].meta.description = "hello bar"; docRef.update({ items: items }); });
Dadurch wird sichergestellt, dass nur die beabsichtigte Eigenschaft im Array aktualisiert wird Element.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich ein einzelnes Element in einem Array-Feld in Firestore?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!