私は欠点を見つけました。それはもっと概念的なものでした。私は非同期呼び出しを扱っていて、別の関数から結果を返そうとしていますが、いつ実行されるかわかりません。したがって、dbクエリを実行して結果を返すように要求すると、nullになります。このコード:
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;
}
nullを返しますが、! console.log(docs)は、データベースからのすべての値をコンソールに出力します。これは私がやろうとしていたことです。次に、変更を加える必要があります。おそらく、結果の受信時に実行されるコールバックを渡します。
変更を加えると、コードは次のようになります。
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));
}
このように、応答オブジェクトを渡すことができるので、忍者の名前を送信できます:)