2017-10-13 17 views

Odpowiedz

15

Można to zrobić w dwóch etapach:

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

Sposób .doc() nie pisać nic do sieci lub dysku, to po prostu sprawia, że ​​odwołanie z auto generowane ID można wykorzystać później.

+0

Rzuca "TypeError: batch.doc nie jest funkcją", jeśli używam łańcucha '.doc(). Set()'. – artooras

+0

Tak, nie wywołuj 'batch.doc()', jak widzisz, nazywam '.doc()' na odwołaniu do kolekcji ** poza partią **. –

+0

Masz rację, to działa. Nie miałem pojęcia, że ​​polecenie '.doc()' faktycznie generuje unikalny identyfikator w trybie offline, tj. Bez wywołania serwera, lub przynajmniej bez tworzenia pustego obiektu w mojej kolekcji, co było moim celem, który chciałbym włączyć '. add() 'command w grupie w pierwszej kolejności. Dziękuję Ci! Przyjmuję twoją odpowiedź. – artooras

1

Według docs

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

Być może dotyczy to partii jak również?

+0

Niestety, rzuca 'TypeError: batch.doc nie jest funkcją' również. – artooras

+0

Nie trzeba wywoływać funkcji .set() w nowym dokumencie. – SimonDepelchin