mongojs的异步调用找到函数
16lz
2021-01-22
I have one mongojs query such as:
我有一个mongojs查询,例如:
db.mapping.find(
{ "provider":req.params.provider, "perId":mongojs.ObjectId(req.params.perId) },
function(err, que){
if(err)
res.send(err);
else if(que)
{
totalVideoList = [];
for (var i=0; i < que.length; i++)
{
myid = que[i].providerId;
db.ABC.find({}, function(err, que1){
if(err)
res.send(err);
var x = {};
for (var j=0; j < que1.length; j++)
{
searching(que1[j]);
}
videoList = [];
getVideo(requiredDocument);
totalVideoList = totalVideoList.concat(videoList);
});
}
res.json(totalVideoList);
}
else
res.json([]);
});
Currently I am always getting [] (empty array) as my response. The problem is due asynchronous nature of callback function of mongojs. Before the expected output comes in "totalVideoList" variable, it responds us with totalVideoList = []. I don't know how to use async.each() here. Please help me to tackle this problem.
目前我总是得到[](空数组)作为我的回答。问题是由于mongojs的回调函数的异步性质。在预期输出进入“totalVideoList”变量之前,它以totalVideoList = []响应我们。我不知道如何在这里使用async.each()。请帮我解决这个问题。
1 个解决方案
#1
1
Assuming using async
假设使用异步
db.mapping.find(
{ "provider":req.params.provider, "perId":mongojs.ObjectId(req.params.perId) },
function(err, que){
if(err)
res.send(err);
else if(que)
{
totalVideoList = [];
async.each(que, function(item, callback){
myid = item.providerId;
db.ABC.find({}, function(err, item){
if(err)
return callback(err);
var x = {};
for (var j=0; j < item.length; j++)
{
searching(item[j]);
}
videoList = [];
getVideo(requiredDocument);
totalVideoList = totalVideoList.concat(videoList);
callback(null);
});
}, function(asyncErr){
if(asyncErr)
return resp.json(asyncErr);
resp.json(totalVideoList);
});
}
else
res.json([]);
});
更多相关文章
- 如何通过ajax将javascript数组传递给YII动作
- 如何使用Knockout从vm设置会话变量?
- 在Javascript中将带有空格的字符串数组转换为小写,然后在Webkit中
- 返回指定时间段相同间隔数组
- JavaScript数组中的唯一计数,按计数排序
- Javascript sort()不适用于Chrome中超过10个对象的数组
- js闭包与变量
- 获取JavaScript数组元素的最大长度
- JavaScript声明全局变量三种方式的异同