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
Libérer: 2024-11-14 19:37:02
original
232 Les gens l'ont consulté

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,
})
Copier après la connexion

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',
    }
  })
})
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal