आप जो चाहते हैं उसे हासिल करने के कई तरीके हैं।
<मजबूत>1. नेवला प्रश्नों का उपयोग करना
इस रणनीति में, आपका फ़ंक्शन एक नेवला क्वेरी देता है जिसे आप बाद में exec
विधि को लागू करने के लिए उपयोग कर सकते हैं और परिणाम प्राप्त करने के लिए इसका उपयोग करें।
function getJedisQuery(name){
var query = Jedi.find({name:name});
return query;
}
तब आप इसे बस ऐसा करके उपयोग कर सकते हैं:
var query = getJedisQuery('Obi-wan');
query.exec(function(err,jedis){
if(err)
return console.log(err);
jedis.forEach(function(jedi){
console.log(jedi.name);
});
});
<मजबूत>2. नेवला वादा जैसी वस्तुओं का उपयोग करना
Moogose वादे जैसी वस्तुओं के लिए समर्थन प्रदान करता है। आपको बस इतना करना है कि मैंने ऊपर जैसा कुछ किया है, लेकिन इस बार, आप exec
का आह्वान करते हैं कॉलबैक के बिना विधि।
function getJedisPromise(name){
var promise = Jedi.find({name:name}).exec();
return promise;
}
तब आप इसे केवल निम्न करके उपयोग कर सकते हैं:
var promise = getJedisPromise('Luke');
promise.then(function(jedis){
jedis.forEach(function(jedi){
console.log(jedi.name);
});
})
जैसा कि इस उत्तर के टिप्पणी अनुभाग में प्रकाश डाला गया है, ये वस्तुएं वास्तव में वादे नहीं हैं और जिन्हें ध्यान में रखा जाना चाहिए (देखें प्रश्न वादे नहीं हैं)।
<मजबूत>3. नेवला धाराओं का उपयोग करना
अंत में, नेवला के पास धाराओं के लिए भी समर्थन है और धाराएँ घटना उत्सर्जक हैं। तो, आप एक स्ट्रीम प्राप्त कर सकते हैं और फिर 'डेटा' और 'त्रुटि' घटनाओं के लिए सदस्यता ले सकते हैं। इस तरह:
function getjedisStream(name){
var stream = Jedi.find({name:name}).stream();
return stream;
}
तब आप बस यह कर सकते हैं:
var stream = getJedisStream('Anakin');
stream.on('data', function(jedis){
jedis.forEach(function(jedi){
console.log(jedi.name);
});
});
stream.on('error', function(error){
console.log(error);
});
स्रोत, भविष्य के संदर्भ के लिए।