2013-09-06 11 views
45

MongoDB का उपयोग कर के इतने परिचयात्मक उदाहरणों में खोलते हैं, तो आप इस तरह कोड देखें:रखते हुए एक MongoDB डेटाबेस कनेक्शन

var MongoClient = require('mongodb').MongoClient; 
MongoClient.connect("mongodb://localhost:port/adatabase", function(err, db) 
{ 
    /* Some operation... CRUD, etc. */ 
    db.close(); 
}); 

तो MongoDB किसी अन्य डेटाबेस प्रणाली की तरह है, open और close संचालन आम तौर पर महंगा समय के लिहाज से कर रहे हैं ।

तो, मेरे सवाल यह है: यह केवल एक बार MongoClient.connect("... करना है ठीक करने के लिए, कुछ मॉड्यूल वैश्विक को लौट db मान असाइन, मॉड्यूल में विभिन्न कार्यों है विभिन्न डेटाबेस से संबंधित काम (संग्रह में डालने दस्तावेजों करते हैं, अद्यतन दस्तावेज, आदि इत्यादि) जब उन्हें एप्लिकेशन के अन्य हिस्सों द्वारा बुलाया जाता है (और इस प्रकार db मान का फिर से उपयोग करें), और फिर, जब आवेदन किया जाता है, तो केवल close करें। नहीं हर बार जब आप जा सकते हैं और कुछ डेटाबेस से संबंधित ऑपरेशन करने की जरूरत है -

दूसरे शब्दों में, open और close एक बार किया जाता है। और आप उस db ऑब्जेक्ट को फिर से उपयोग करते रहें जो शुरुआती open\connect के दौरान वापस लौटाया गया था, केवल close के साथ, जब आप वास्तव में अपने सभी डेटाबेस से संबंधित कार्य के साथ किया जाता है, तो अंत में इसका निपटान करने के लिए।

जाहिर है, चूंकि सभी I/O एसिंच है, close से पहले आप सुनिश्चित करेंगे कि अंतिम डेटाबेस ऑपरेशन close जारी करने से पहले पूरा हो गया है। ऐसा लगता है कि यह ठीक होना चाहिए, लेकिन अगर मैं कुछ याद कर रहा हूं तो मैं दोबारा जांचना चाहता हूं क्योंकि मैं मोंगोडीबी के लिए नया हूं। धन्यवाद!

+0

यह भी जांचें [यह] (http://stackoverflow.com/questions/14495975/why-its-recommended-not-to-close-any-mongodb-connection-anywhere-in-node-js-code), आपकी मदद कर सकते हैं –

+0

दिलचस्प .... हाँ, सहायक; आपका बहुत बहुत धन्यवाद! – Lew

उत्तर

35

हां, यह ठीक और सामान्य व्यवहार है। अपना ऐप शुरू करें, डीबी से कनेक्ट करें, लंबे समय तक डीबी के खिलाफ ऑपरेशन करें, अगर कनेक्शन कभी अप्रत्याशित रूप से मर जाता है तो फिर से कनेक्ट हो सकता है, और उसके बाद कनेक्शन को कभी भी बंद न करें (केवल स्वचालित बंद होने पर भरोसा करें जो आपकी प्रक्रिया मरने पर होता है) ।

+1

इसके अलावा, आपको डिफ़ॉल्ट रूप से नोड-मोंगोड-मूल के साथ 5 पूल कनेक्शन मिलते हैं। [पूलसाइज] पर दस्तावेज़ों को देखें (http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html#mongoclient-connect- विकल्प)। – hurrymaplelad

+0

मेरे संदेह की पुष्टि करने के लिए बहुत बहुत धन्यवाद, पीटर - इसकी सराहना करें! – Lew

+0

मैंने समाधान का पालन किया https://stackoverflow.com/a/24634454/3994271 जो इस उत्तर में उल्लिखित वही काम करता है। लेकिन, अगर कनेक्शन अप्रत्याशित रूप से मर जाता है तो हम स्वचालित रूप से फिर से कनेक्ट कैसे कर सकते हैं? – Ayan

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