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!