Maison >interface Web >js tutoriel >Comment puis-je mettre à jour un seul élément dans un champ de tableau dans Firestore ?

Comment puis-je mettre à jour un seul élément dans un champ de tableau dans Firestore ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-19 07:46:02912parcourir

How Can I Update a Single Item in an Array Field in Firestore?

Mise à jour d'un seul élément dans un champ de tableau dans Firestore

Vous disposez d'un champ de tableau appelé éléments dans un document Firestore et vous souhaitez mettre à jour un champ dans l'un des objets du tableau.

Initial Tentative

Votre tentative initiale a utilisé le code suivant :

const key = `items.${this.state.index}.meta.description`
const property = `hello bar`;

this.design.update({
  [key]: property
})
...

Cependant, cela a supprimé l'intégralité de l'objet à l'index de tableau spécifié, ne laissant que le champ de description.

Tentative modifiée

Votre tentative modifiée a utilisé ce qui suit code :

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
})
...

Cela a apparemment converti le tableau d'éléments en un objet, perdant ainsi la structure du tableau.

Limites de Firestore

Firestore a des limites dans mise à jour des champs du tableau. Il permet uniquement d'ajouter ou de supprimer des éléments, pas de modifier ceux existants.

Solution

Pour modifier un élément dans un champ de tableau, vous devez lire l'intégralité du tableau, faire les modifications nécessaires en mémoire, puis mettre à jour l'intégralité du champ du tableau modifié.

const items = this.design.get("items"); // Read the array field
items[this.state.index].meta.description = "hello bar"; // Modify the item
this.design.update({
  items: items // Update the entire modified array
})
...

En utilisant cette approche, vous pouvez mettre à jour l'élément spécifique dans le champ du tableau sans perdre le structure du tableau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn