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([]);
    });

更多相关文章

  1. 如何通过ajax将javascript数组传递给YII动作
  2. 如何使用Knockout从vm设置会话变量?
  3. 在Javascript中将带有空格的字符串数组转换为小写,然后在Webkit中
  4. 返回指定时间段相同间隔数组
  5. JavaScript数组中的唯一计数,按计数排序
  6. Javascript sort()不适用于Chrome中超过10个对象的数组
  7. js闭包与变量
  8. 获取JavaScript数组元素的最大长度
  9. JavaScript声明全局变量三种方式的异同

随机推荐

  1. python使用MySQLdb模块连接MySQL
  2. 更改SQLServer实例默认字符集
  3. 如何从sql server上的一个表中删除8500,0
  4. Mysql 范式、索引、视图、事务、sp等概
  5. LINQ之开放式并发控制和事务
  6. MySQL查询过程中出现lost connection to
  7. 求指导,PB12.0 如何用ini文件 连接sql 200
  8. MySQL Cluster在线添加数据节点
  9. Windows安装MySQL Community 5.7.17(非msi
  10. 如何在SQL server中创建excel表并导出