我有子集合ID列表并运行for循环。在for循环中,我尝试查找父集合数据并插入另一个集合中。示例代码如下所示
for(let i=0; i<test.length; i++;){
db.collection('Parent').find({ "Id" : test[i].Id }).toArray(function(err, result){
if(result.length > 0){
db.collection('anotherCollection', function(err, collection){
collection.insert({
field1: test[i].field1,
field2: test[i].field2
})
})
}
})
}
当我尝试执行此代码时,循环在集合插入之前完成。所以我需要在每次迭代时插入集合。
答案 0 :(得分:0)
如果你的测试数组不是太长,你可以尝试递归地执行它
function doAsyncLoop(i, test) {
if (i < test.length) {
db.collection('Parent').find({
"Id": test[i].Id
}).toArray(function(err, result) {
if (result.length > 0) {
db.collection('anotherCollection', function(err, collection) {
collection.insert({
field1: test[i].field1,
field2: test[i].field2
});
doAsyncLoop(i++, test);
})
} else {
doAsyncLoop(i++, test);
}
})
}
}
答案 1 :(得分:0)
您可以尝试这样做:
const data = db.collection('Parent').find({ "Id" : test[i].Id }).toArray();
db.collection('anotherCollection').insert(data);
Insert可以直接使用数组