const collect = [];
req.body.product.forEach(function(entry) {
mongoClient.connect(databaseServerUrl, function(err, db) {
let testCollection = db.collection('Tests');
testCollection.find({Product: entry}).toArray((err, docs) => {
let waiting = docs.length;
docs.forEach(function (doc) {
collect.push(doc);
finish();
});
function finish() {
waiting--;
if (waiting === 0) {
res.send(collect);
}
}
});
db.close();
});
});
これは最初のセットだけを戻しています。 req.body.productの配列に2つのノードがある場合などです。私は最初のセットを取り戻すだけです。しかし、私は1つのコレクションだけでなく、すべてを取り戻す必要があります。2つのforEachの後にres.sendが実行を完了しました
単一のクエリですべての結果を取得するだけの理由はありませんか。 '.find({$ or:req.body.product.map(entry =>({Product:entry}))})'? –
パーフェクト。私はこれが好き。あなたが私の質問に答えていれば。私はこれを答えとして投票します。ありがとう! :) – mkteagle
私は答えを投稿しました。私が実際にそれをテストすることができなかったので(そして、私は本当にMongoDBのユーザーではないので)、あなたのために働くのかどうか教えてください。 –