2012-06-18 15 views
7

मैं उल्का का उपयोग कर रहा हूं। मैं सोच रहा हूं कि डीओएम अपडेट होने से पहले बैच अपडेट करने का एक शॉर्टेंड तरीका है या नहीं।उल्का बैच अपडेट

उदाहरण के लिए

मैं कुछ रिकॉर्ड को अपडेट करने, एक से अधिक (सभी एक ही बार में) हैं:

Collection.update(id1,{..}) 
Collection.update(id2,{..}) 
Collection.update(id3,{..}) 

समस्या 3 आइटम को अलग से अपडेट किया जा रहा वहाँ हो रहा है। तो जब मेरे मामले में डीओएम एक बार के बजाय 3 बार फिर से खींचा जा रहा था (सभी 3 अद्यतन रिकॉर्ड के साथ)।

क्या यूई अपडेटिंग को बंद करने का कोई तरीका है जब तक कि उन सभी को अपडेट नहीं किया जाता है?

उत्तर

-1

इसके बजाय सर्वर पर निष्पादित करें, इस तरह वे सिंक्रनाइज़ तरीके से ऐसा कर सकते हैं कि क्लाइंट पर एकाधिक DOM अपडेट होने की संभावना कम है।

first two and last interesting code bits देखें, जो बताता है कि कैसे अपने ग्राहकों को डेटाबेस के साथ गड़बड़ करने के साथ-साथ सर्वर पर विधियों को परिभाषित करने और क्लाइंट से कॉल करने के तरीके को कैसे सुरक्षित किया जाए।

+0

मुझे अभी भी यह सुनिश्चित नहीं है कि यह असीमित है या नहीं, लेकिन यह – Akshat

23

मोंगो का अपडेट एक समय में एक से अधिक दस्तावेज़ों को संशोधित कर सकता है। बस इसे एक चयनकर्ता दें जो एक से अधिक दस्तावेज़ों से मेल खाता है, और multi विकल्प सेट करें। आपके मामले में, यह सिर्फ आईडी की एक सूची है, लेकिन आप किसी भी चयनकर्ता का उपयोग कर सकते हैं।

Collection.update({_id: {$in: [id1, id2, id3]}}, {...}, {multi:true}); 

यह एक एकल DB अद्यतन और एक भी redraw चलेंगे।

+4

ऐसा करने के लिए पहले से ही अधिक अनुकूल है मान लीजिए उपर्युक्त मोंगो चयनकर्ता द्वारा मिलान किए गए प्रत्येक दस्तावेज़ में एक संपत्ति परीक्षण है और मैं विभिन्न मूल्यों के साथ परीक्षण प्रोपेर्टी अपडेट करना चाहता हूं प्रत्येक दस्तावेज़, क्या यह किसी भी तरह से संभव है? जिस तरह से मैं उपरोक्त आपके उत्तर को समझता हूं वह यह है कि मैं किसी भी फ़ील्ड को निश्चित स्थिर मूल्य के साथ सेट कर सकता हूं और _id द्वारा मेल किए गए सभी दस्तावेज़ प्रभावित होंगे। लेकिन मेरे पास एक निश्चित मूल्य नहीं है। – Vinay

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