この問題は何時間も続きました。以下のコード:ノードJS mongooseクエリが結果を生成していません
router.route("/contact")
.get(function(req,res){
var response = {};
Contact.find({},function(err,data){
if(err) {
response = {"error" : "Error fetching data"};
} else {
response = {"message" : data};
}
res.json(response);
});
})
問い合わせの上では、このコードは、任意の出力を生成しないデータベース内のすべての連絡先となりますが
router.route("/contact/department/:dept")
.get(function(req,res){
var response = {};
var arrDept = req.params.dept.split(",");
if(arrDept.length == 0){
response = {"error": " Please enter Department keywords"};
}
else{
response = {};
arrDept.forEach(function(currentValue){
Video.find({dept: '/'+currentValue+'/i'}, function(err, data){
if(err){
response[currentValue] = "No data found";
}else{
response[currentValue] = data;
}
});
});
}
res.json(response);
});
生成します。
コードは、他のブロックでforeachループに入っているが、私は
Video.find({},function(err, data){
if(err){
response[currentValue] = "No data found";
}else{
response[currentValue] = data;
}
});
のような基本的なものにJSONはまだ空白返される応答をクエリを変更しても、クエリは、任意の結果を生成されていません。
PS:実際の問題の例に過ぎないため、問題は単純化されています。私はコードに直面しています。回答後に 更新が見つかりました。
DAXaholicに感謝....しかし、どのように私は応答jsonオブジェクトにループの各反復からデータを追加するのですか? –
それ以上のヘルパーライブラリを使わずに実行できます。コールバックの外側の配列を結果とともに保持し、コールバックでその配列に追加します。その配列のサイズが 'arrDept'と同じになるとすぐにすべての結果が得られます。しかし、正直言って、async.jsのようなものを使う方がはるかに簡単で簡単です。私が意味することの簡単な例については、https://github.com/caolan/async#mapを参照してください。 – DAXaholic
thnx ...私はついにそれを約束で解決しました。 var promise = Contact.find({dept:{$ in:arrayDept}})。 \t \t \t promise.then(関数(resultJson){ \t \t \t \t res.json(resultJson); \t \t \t})。 –