2017-10-13 2 views

Antwort

15

Sie können dies in zwei Schritten tun:

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

Die .doc() Methode hat nichts mit dem Netzwerk oder Festplatte schreiben, macht es nur einen Verweis mit einem automatisch generierten ID Sie später verwenden können.

+0

Es wirft 'TypeError: Batch.doc ist keine Funktion ', wenn ich die' .doc() .set() 'Kette benutze. – artooras

+0

Ja, rufen Sie nicht 'batch.doc()' auf, wie Sie sehen können Ich rufe '.doc()' auf einer Sammlungsverweis ** außerhalb des Stapels **. –

+0

Sie haben Recht, es funktioniert. Ich hatte keine Ahnung, dass der '.doc()' Befehl tatsächlich eine eindeutige ID offline erzeugt, dh ohne einen Serveraufruf, oder zumindest ohne ein leeres Objekt in meiner Sammlung zu erstellen, was der einzige Punkt war, an dem ich die '' add() 'Befehl im Stapel an erster Stelle. Vielen Dank! Ich werde deine Antwort akzeptieren. – artooras

1

Nach der docs

Behind the scenes, .add(...) and .doc().set(...) are completely equivalent, so you can use whichever is more convenient.

Vielleicht gilt dies auch für Chargen?

+0

Leider löst es einen 'TypeError: Batch.doc ist keine Funktion'. – artooras

+0

Nein, Sie müssen .set() auf einem neuen Dokument nicht aufrufen. – SimonDepelchin