Firestore - batch.add не является функцией

документация для пакетных списков Firestore только списки set(), update() и delete() в качестве разрешенных операций.

Невозможно добавить операцию add() в пакет? Мне нужен документ, который будет создан с автоматически сгенерированным идентификатором.

Ответ 1

Вы можете сделать это в два этапа:

// 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' });

Метод .doc() ничего не пишет в сети или на диске, он просто делает ссылку с автоматически сгенерированным идентификатором, который вы можете использовать позже.

Ответ 2

В соответствии с документами

За кулисами,.add(...) и .doc(). set (...) полностью эквивалентны, поэтому вы можете использовать то, что удобнее.

Возможно, это относится и к партиям?

Ответ 3

Создайте ссылку на коллекцию, в которую вы собираетесь добавить пакетные данные. Мы зациклились на req.body, используя forEach, и установили все данные, которые нужно добавить в коллекцию, используя метод set.

Мы фиксируем данные и сохраняем данные в коллекции, используя метод commit, и в случае успеха отправляем ответ об успешном выполнении.

облачный пожарный магазин

Ответ 4

В моем случае, используя AngularFire2, мне пришлось использовать метод batch.set(), передав в качестве первого параметра ссылку на документ с ранее созданным идентификатором и атрибут ссылки:

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