मुझे दोष मिल गया है। यह एक वैचारिक रूप से अधिक था:मैं एसिंक्रोनस कॉल से निपट रहा हूं और परिणाम को किसी अन्य फ़ंक्शन से वापस करने का प्रयास कर रहा हूं और यह नहीं जानता कि यह कब निष्पादित होगा। तो क्या होता है मैं अनुरोध करता हूं कि डीबी क्वेरी निष्पादित की जाए और परिणाम वापस कर दें, जो शून्य हो जाता है। यह कोड:
getNinjas : function(){
var res = null;
Ninja.find({},'name skill',function(err,docs){
if (err)
console.log('error occured in the database');
console.log(docs);
});
return res;
}
शून्य लौटाता है, लेकिन! कंसोल.लॉग (दस्तावेज़) डेटाबेस से सभी मानों को कंसोल पर प्रिंट करता है, जो मैं करने की कोशिश कर रहा था। अब मुझे परिवर्तन करने की आवश्यकता है, सबसे अधिक संभावना है कि एक कॉलबैक पास करें जिसे परिणाम प्राप्त होने पर निष्पादित किया जाएगा।
परिवर्तनों के साथ कोड इस तरह दिखता है:
getNinjas : function(res){
var twisted = function(res){
return function(err, data){
if (err){
console.log('error occured');
return;
}
res.send('My ninjas are:\n');
console.log(data);
}
}
Ninja.find({},'name skill',twisted(res));
}
तो इस तरह मैं प्रतिक्रिया वस्तु को पारित करने में सक्षम हूं ताकि मैं अपने निंजा का नाम भेज सकूं :)