Heim > Web-Frontend > js-Tutorial > Wie aktualisiere ich ein einzelnes Element in einem Array-Feld in Firestore?

Wie aktualisiere ich ein einzelnes Element in einem Array-Feld in Firestore?

Linda Hamilton
Freigeben: 2024-11-15 10:02:03
Original
521 Leute haben es durchsucht

How to Update a Single Item in an Array Field 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'
     }
   }
 ]
}
Nach dem Login kopieren

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

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage