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

Comment puis-je mettre à jour un champ imbriqué dans un tableau dans Firestore ?

DDD
DDDoriginal
2024-11-14 19:37:02233parcourir

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

Firestore : mise à jour des champs de tableau imbriqués

Énoncé du problème :

Vous avez un document dans Firestore avec un champ de tableau contenant objets. Vous devez mettre à jour un champ spécifique dans un objet à l'intérieur du tableau. Cependant, tenter de mettre à jour directement à l'aide de la notation par points (items.${index}.meta.description) ne fonctionne pas correctement.

Solution :

Firestore ne prend actuellement pas en charge la mise à jour directe d'un élément spécifique dans un tableau indexé. Envisagez plutôt les alternatives suivantes :

Option 1 : réécrivez l'intégralité du tableau

Au lieu de mettre à jour le champ spécifique, lisez l'intégralité du tableau à partir du document, créez le champ souhaité. modification en mémoire, puis mettez à jour le champ du tableau modifié dans son ensemble :

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

Cette approche réécrit efficacement l'intégralité du tableau, ce qui peut être inefficace si le tableau est grand.

Option 2 : Utiliser les opérations sur le tableau

Bien que Firestore n'autorise pas les mises à jour directes des éléments de tableau existants, vous pouvez toujours ajouter ou supprimer des éléments à l'aide d'opérations sur le tableau. Par exemple, pour ajouter un nouvel élément au tableau :

this.design.update({
  items: FieldValue.arrayUnion({
    name: 'New Item',
    meta: {
      image: 'def.png',
      description: 'hello new item',
    }
  })
})

Pour supprimer un élément, utilisez FieldValue.arrayRemove().

Recommandation :

Si le tableau est relativement petit, Option 1 (réécriture de l'intégralité du tableau) peut être une solution simple. Cependant, si le tableau est grand, L'option 2 (en utilisant des opérations sur le tableau) est plus efficace car elle évite d'écraser l'intégralité 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