Heim > Web-Frontend > js-Tutorial > Wie kann ich ein verschachteltes Feld in einem Array in Firestore aktualisieren?

Wie kann ich ein verschachteltes Feld in einem Array in Firestore aktualisieren?

DDD
Freigeben: 2024-11-14 19:37:02
Original
233 Leute haben es durchsucht

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

Firestore: Verschachtelte Array-Felder aktualisieren

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äß.

Lösung:

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,
})
Nach dem Login kopieren

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',
    }
  })
})
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage