2017-10-13 13 views
6

फायरस्टोर बैच के लिए documentation लिखता है केवल set(), update() और delete() अनुमत संचालन के रूप में सूचीबद्ध करता है।फायरस्टोर - बैच.एड एक फ़ंक्शन नहीं है

क्या बैच में add() ऑपरेशन जोड़ने का कोई तरीका नहीं है? मुझे एक ऑटो-जेनरेट आईडी के साथ एक दस्तावेज़ बनाने की आवश्यकता है।

उत्तर

15

आप दो चरणों में यह कर सकते हैं:

// 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() विधि नेटवर्क या डिस्क पर कुछ भी लिखना नहीं है, यह सिर्फ एक स्वत: जनरेट आईडी आप बाद में उपयोग कर सकते हैं के साथ एक संदर्भ बनाता है।

+0

यह 'TypeError फेंकता है: batch.doc फ़ंक्शन नहीं है 'अगर मैं' .doc()। Set()' chain का उपयोग करता हूं। – artooras

+0

हां 'batch.doc()' को कॉल न करें, जैसा कि आप देख सकते हैं कि मैं बैच ** के बाहर संग्रह संदर्भ पर '.doc()' को कॉल कर रहा हूं। –

+0

आप सही हैं, यह काम करता है। मुझे नहीं पता था कि '.doc()' कमांड वास्तव में एक अद्वितीय आईडी ऑफ़लाइन उत्पन्न करता है, यानी सर्वर कॉल के बिना, या कम से कम मेरे संग्रह में एक खाली ऑब्जेक्ट बनाये बिना, जो मेरा पूरा बिंदु था ' बैच में पहली जगह में() 'कमांड जोड़ें। धन्यवाद! मैं आपका जवाब स्वीकार करूंगा। – artooras

1

डॉक्स

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

के अनुसार शायद यह रूप में अच्छी तरह बैचों पर लागू होता है?

+0

दुर्भाग्यवश, यह 'TypeError फेंकता है: batch.doc फ़ंक्शन नहीं है .. – artooras

+0

नहीं, आपको किसी नए दस्तावेज़ पर .set() को कॉल करने की आवश्यकता नहीं है। – SimonDepelchin

संबंधित मुद्दे