i want to improve code
this is node.js code when i do an ajax call from client side, data i need to send back is kind of inner join of two collection in mongodb
as mongodb calls are asynchronous
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) ;
}
});
}
});
});
above code works fine but if i do following
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) ;
});
problem is 'output[i].calllist2' coming undefind
please help
( can any one improve above code by using closure or any method?)