आप एक वैश्विक चर . का उपयोग कर सकते हैं कनेक्शन रखने के लिए (उदा. db
), उदाहरण के लिए:
var db = null // global variable to hold the connection
MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
if(err) { console.error(err) }
db = client.db('test') // once connected, assign the connection to the global variable
})
app.get('/', function(req, res) {
db.collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
})
})
या, यदि आप चाहें, तो आप वादा वस्तु . का भी उपयोग कर सकते हैं जो MongoClient
. द्वारा लौटाया जाता है अगर इसे कॉलबैक तर्क के बिना कहा जाता है:
var conn = MongoClient.connect('mongodb://localhost:27017/') // returns a Promise
app.get('/', function(req, res) {
conn.then(client=> client.db('test').collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
}))
})
कृपया ध्यान दें कि मैंने दूसरे उदाहरण में ES6 वसा तीर फ़ंक्शन परिभाषा का उपयोग किया है।
आप बिल्कुल सही हैं कि आपको MongoClient
. पर कॉल नहीं करना चाहिए हर बार। ग्लोबल वैरिएबल या प्रॉमिस का इस्तेमाल करने से MongoDB नोड.जेएस ड्राइवर एक कनेक्शन पूल बना सकता है, जो कम से कम दो अच्छी चीजें हासिल करता है:
- कनेक्शन का पूल में पुन:उपयोग किया जाता है, इसलिए आपके आवेदन के जीवनकाल के लिए कोई भी महंगी सेटअप/टियरडाउन प्रक्रिया नहीं है। आप एक बार कनेक्ट करें, और ड्राइवर को आपके लिए बाकी की देखभाल करने दें।
- कनेक्शन पूल के आकार को सीमित करके, आप अपने एप्लिकेशन द्वारा डेटाबेस में किए जाने वाले कनेक्शन की मात्रा को नियंत्रित कर सकते हैं।
2018-08-24 संपादित करें :MongoClient.connect()
node.js ड्राइवर संस्करण 3.0 में विधि और नया डेटाबेस ऑब्जेक्ट के बजाय क्लाइंट ऑब्जेक्ट देता है। ऊपर दिए गए उदाहरणों को नवीनतम नोड.जेएस ड्राइवर संस्करण के साथ अद्यतित रखने के लिए संशोधित किया गया था।