Saya telah menemukan kesalahannya. Itu lebih bersifat konseptual:Saya berurusan dengan panggilan asinkron dan saya mencoba mengembalikan hasil dari fungsi lain dan tidak tahu kapan itu akan dieksekusi. Jadi yang terjadi adalah saya membuat permintaan agar kueri db dieksekusi dan mengembalikan hasilnya, yang ternyata nol. Kode ini:
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;
}
mengembalikan nol, tapi! console.log(docs) mencetak ke konsol semua nilai dari database, apa yang saya coba lakukan. Sekarang saya perlu membuat perubahan, kemungkinan besar melewati panggilan balik yang akan dieksekusi setelah menerima hasil.
Dengan perubahan kode terlihat seperti ini:
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));
}
Jadi seperti ini saya dapat melewati objek respons sehingga saya dapat mengirim nama ninja saya :)