web-dev-qa-db-fra.com

Firestore - batch.add n'est pas une fonction

La documentation pour les écritures batch Firestore répertorie uniquement set(), update() et delete() comme opérations autorisées.

N'y a-t-il aucun moyen d'ajouter une opération add() au lot? J'ai besoin d'un document à créer avec un identifiant généré automatiquement.

32
artooras

Vous pouvez le faire en deux étapes:

// Create a ref with auto-generated ID
var newCityRef = db.collection('cities').doc();

// ...

// Add it in the batch
batch.set(newCityRef, { name: 'New York City' });

La méthode .doc() n'écrit rien sur le réseau ou le disque, elle fait juste une référence avec un ID généré automatiquement que vous pourrez utiliser plus tard.

70
Sam Stern

Selon les documents

Dans les coulisses, .add (...) et .doc (). Set (...) sont complètement équivalents, vous pouvez donc utiliser ce qui est plus pratique.

Peut-être que cela s'applique également aux lots?

1
sgt_lagrange

Dans mon cas, en utilisant AngularFire2, j'ai dû utiliser la méthode batch.set (), en passant comme premier paramètre la référence du document avec un ID précédemment créé, et l'attribut de référence:

import { AngularFirestore } from '@angular/fire/firestore';
...
private afs: AngularFirestore
...
batch.set(
    this.afs.collection('estados').doc(this.afs.createId()).ref,
    er.getData()
  );

Créer la référence à la collection dans laquelle vous allez ajouter les données de lot Nous faisons une boucle sur le corps de requête à l'aide de forEach et définissons chaque donnée à ajouter à la collection à l'aide de la méthode set

Nous validons les données et les enregistrons dans la collection en utilisant la méthode commit et en cas de succès, envoyons une réponse de succès.

cloud firestore

0
Vishnu B