我想改进代码
当我从客户端进行ajax调用时,这是node.js代码,我需要发回的数据是mongodb中两个集合的内部联接
因为mongodb调用是异步的
app.get('/temppage', ensureAjaxAuthenticated, function(req, res){
var insertData1 = {
"valid" : true
};
var output = new Array();
db.collection('coll1').find(insertData1).toArray(function(err, calllist1){
for(var i=0; i < calllist1.length; i++)
{
var insertData2 = {
"coll1_id" : calllist1[i]._id
};
db.collection('coll2').find(insertData2).toArray(function(err, calllist2){
output[i] = calllist1;
output[i].calllist2 = calllist2;
if(i == (calllist1.length - 1) )
{
res.send(output) ;
}
});
}
});
});
上面的代码工作正常但是 如果我这样做
app.get('/temppage', ensureAjaxAuthenticated, function(req, res){
var insertData1 = {
"valid" : true
};
var output = new Array();
db.collection('coll1').find(insertData1).toArray(function(err, calllist1){
for(var i=0; i < calllist1.length; i++)
{
var insertData2 = {
"coll1_id" : calllist1[i]._id
};
db.collection('coll2').find(insertData2).toArray(function(err, calllist2){
output[i] = calllist1;
output[i].calllist2 = calllist2;
});
}
});
res.send(output) ;
});
问题是'输出[i] .calllist2'即将发现
请帮忙
(可以通过使用闭包或任何方法改进上面的代码吗?)