0
node.js
にmongoDBを使用するコードを作成しました。すべて正常に動作していますが、ネストされたループを使用すると、破損して適切な値が返されません。フェッチすべてのデータは以下のように起こるように、私のコンソールメッセージでnode.jsで非同期を使用する方法
DB1.find({},function(error,fetchAllDB1) {
var mainArray = new Array();
for (var i in fetchAllDB1) {
if(fetchAllDB1[i].name) {
var array1 = new Array();
var array2 = new Array();
array1['name'] = fetchAllDB1[i].name;
array1['logo'] = fetchAllDB1[i].logo;
array1['desc'] = fetchAllDB1[i].desc;
DB2.find({is_featured:'1', brand_id: fetchAllDB1[i]._id}, function(error,fetchDB2) {
for (var p in fetchDB2) {
var pArr=[];
pArr['_id'] = fetchDB2[p]._id;
pArr['name'] = fetchDB2[p].name;
pArr['sku'] = fetchDB2[p].sku;
pArr['description'] = fetchDB2[p].description;
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
console.log(pArr);
console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
array2[p]=pArr;
}
array1['pp']= array2;
});
mainArray[i]=array1;
}
}
console.log('######### LAST #########');
console.log(mainArray);
console.log('######### LAST #########');
});
は、そのは、私は私のコードで非同期を使用したいという
console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>');
All Values;
console.log('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<');
後
console.log('######### LAST #########');
All Values
console.log('######### LAST #########');
を示す:
mainarray =
[
[array1] = All Values
[array2] = [0]
[1]
]
mainarray =
[
[array1] = All Values
[array2] = [0]
[1]
]
どのようにあなたのコードでも動作しますか?私は 'for(var i in fetchAllDB1) 'を意味します。' i'はオブジェクトでなければなりませんが、整数として使用しますか? @Stanのコメントに追加するのは – sed
、DB2とは何ですか?コレクションまたは実際のデータベース?それがDBなら、あなたは何を照会していますか?私は、dbにfindメソッドがあることをドキュメントではわかりません... –
とにかく、あなたが探しているのはこのライブラリです。そこにループ内で非同期アクションを作成できます。 https://caolan.github.io/async/ – sed