दिलचस्प पोस्ट
एक छवि सी # का आकार बदलें आप समय को संकलित करने और विज़ुअल सी ++ प्रोजेक्ट (देशी सी ++) के लिए समय जोड़ने से कैसे कम करते हैं? क्या मैं अनजान फाइलों पर git diff का उपयोग कर सकता हूँ? क्या आप केवल अपने प्रकार के नकली हैं? कई डेटा.फ्रेम को एक डेटा.फ्रेम में एक लूप के साथ मिलाएं जावा में एक निर्देशिका से फ़ाइलों को कैसे खींचें और छोड़ें नए हैशिंग एल्गोरिथ्म के लिए पुराने पासवर्ड चलाना? एचटीएमएल एंटीटी डिकोड IOS पर सभी संपर्कों की एक सूची प्राप्त करें जावा socket.io ग्राहक पायथन का उपयोग करते हुए 'wb' का मतलब इस कोड में क्या है? विभिन्न डोमेन पर लॉगिन पृष्ठ link_to: पुष्टि करता है कि दो बार पॉपअप प्रदर्शित करता है PyMongo का उपयोग करते हुए डुप्लिकेट कुंजी त्रुटि के बाद प्रविष्टि कैसे जारी रखना जर्सी के शांत वेब सेवा में अन्य ऑब्जेक्ट के साथ फ़ाइल अपलोड करें

Node.js में तुल्यकालिक मोंगो डीबी क्वेरी बनाने का सही तरीका क्या है?

मैं MongoDB के लिए नोड। जेएस चालक का उपयोग कर रहा हूं, और मैं एक तुल्यकालिक क्वेरी करना चाहता हूं, जैसे कि:

function getAThing() { var db = new mongo.Db("mydatabase", server, {}); db.open(function(err, db) { db.authenticate("myuser", "mypassword", function(err, success) { if (success) { db.collection("Things", function(err, collection) { collection.findOne({ name : "bob"}, function(err, thing) { return thing; }); }); } }); }); } 

समस्या यह है, डीबी.ओपें एक एसिगोरोन कॉल (यह ब्लॉक नहीं है) है, इसलिए प्राप्त करने के लिए "अपरिभाषित" रिटर्न मिलता है और मैं इसे क्वेरी के परिणाम वापस करना चाहता हूं। मुझे यकीन है कि मैं कुछ अवरोधक तंत्र कर सकता हूं, लेकिन मैं इस तरह से कुछ करने का सही तरीका जानना चाहता हूं।

Solutions Collecting From Web of "Node.js में तुल्यकालिक मोंगो डीबी क्वेरी बनाने का सही तरीका क्या है?"

इस तुल्यकालिक w / ओ कुछ प्रकार के भयानक हैक बनाने के लिए कोई रास्ता नहीं है। सही तरीके से प्राप्त करने के लिए एक कॉलबैक फ़ंक्शन को एक पैरामीटर के रूप में स्वीकार करना है और फिर एक बार उपलब्ध होने पर उस फ़ंक्शन को कॉल करना है।

 function getAThing(callback) { var db = new mongo.Db("mydatabase", server, {}); db.open(function(err, db) { db.authenticate("myuser", "mypassword", function(err, success) { if (success) { db.collection("Things", function(err, collection) { collection.findOne({ name : "bob"}, function(err, thing) { db.close(); callback(err, thing); }); }); } }); }); } 

अब मोंगो सिंक उपलब्ध है, यह नोड.जेएस में तुल्यकालिक मोंगो डीबी क्वेरी बनाने का सही तरीका है।

मैं इसे उसी के लिए प्रयोग कर रहा हूँ आप नीचे सिंक विधि लिख सकते हैं:

 var Server = require("mongo-sync").Server; var server = new Server('127.0.0.1'); var result = server.db("testdb").getCollection("testCollection").find().toArray(); console.log(result); 

नोट: यह नोड-फाइबर पर निर्भर है और कुछ समस्याएं इसके साथ विंडोज 8 पर हैं

हैप्पी कोडिंग 🙂

हालांकि यह सख्ती से तुल्यकालिक नहीं है, एक बार मैं बार-बार अपनाने वाला और बहुत उपयोगी पाया है, सह -उपयोग और अतुल्यकालिक कार्यों पर उपज का प्रचार करना है। मंगो के लिए, आप उपरोक्त पुनर्लेखन कर सकते हैं:

 var query = co( function* () { var db = new mongo.Db("mydatabase", server, {}); db = promisify.object( db ); db = yield db.open(); yield db.authenticate("myuser", "mypassword"); var collection = yield db.collection("Things"); return yield collection.findOne( { name : "bob"} ); }); query.then( result => { } ).catch( err => { } ); 

इसका मतलब है की:

  1. आप किसी भी अतुल्यकालिक पुस्तकालय के साथ "तुल्यकालिक" जैसे कोड लिख सकते हैं
  2. कॉलबैक से त्रुटियां फेंक दी गई हैं, जिसका अर्थ है कि आपको सफलता की जांच करने की आवश्यकता नहीं है
  3. आप परिणाम को कोड के किसी भी दूसरे हिस्से के वादे के रूप में पास कर सकते हैं