私はアプリケーションを開発するためにノードjsを使用しています。コントローラでは、私はforループを使用し、いくつかのコードを書いたが、forループで私はクエリを実行しています。したがって、そのクエリの前にループ実行のコードが一度完全に実行されます。例えば以下を参照してください。ループの実行中にノードJsに問題が発生しました
var commcount = [];
for (var j = 0, len = exlist.length; j < len; j++) {
console.log('exlist[j].id '+exlist[j].id);
ExModel.find({EXModel_ID:exlist[j].id, VALUE: {'$ne':''}},{_id:0}, {sort: {CREATION_DATE: -1}}, function(err1, examplist) {
if (err1) {
console.log('sub error '+err1);
commcount.push(0);
} else {
console.log('examplist.length '+examplist.length);
commcount.push(examplist.length);
}
});
}
console.log('commcount length '+commcount.length);
上記のコードでは、exlist.lengthが5であると仮定してください。forループは5回実行されます。出力コンソールでは、最初にexlist [j] .id値を5回表示してから、長さの値を0として表示し、次にexamplist.length値のみを表示します。したがって、クエリが実行される前に、他のステートメントやforループの後のステートメントのforループが実行されています。これを解決するために私を助けてください。 forループ内のクエリの結果リストの長さを配列に格納し、それらの配列値をforループの後に表示したい。
出力は 'd c a b'となります –
はい、あなたは正しいです!ごめんなさい!入力中に私は間違いを犯しました。 –