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
Linda HamiltonOriginal
2024-11-15 10:02:03508Durchsuche

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'
     }
   }
 ]
}

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!

Stellungnahme:
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