无法将数据推送到组合数据阵列

时间:2016-06-12 11:34:01

标签: javascript node.js mongodb

我无法将数据推入闭包函数内的combineddata数组。我发现我需要使用闭包来处理与数据库相关的程序。我是节点js和javascript的新手。它的异步性质让我陷入这样的困境。任何人都可以帮忙我怎么处理这个问题。

combineddata=[];
        if(err){
            res.send(err);
        }else{
            for(i=0;i<data.length;i++){

            (function(){
                x=i;

                teststats.addTestStats.find({Testid:data[x].Testid},function(err,testdata){
                    if(err){
                        res.send(err);
                    }else{
                        //console.log(testdata+"no"+x+"yes"+i);
                        console.log(x,i)
                        stat.push(testdata);
                        combineddata.push("examplepush");
                    }

                });
            })();


            }
        }
res.send(combineddata);

1 个答案:

答案 0 :(得分:0)

我假设&#34;无法推动&#34;您的意思是,您推送到"examplepush"的{​​{1}}未显示在您的HTTP响应中。这是因为数据库查询是异步执行的,并且回调中的推送代码实际上在您完成combineddata并从处理程序返回后运行。

你可以做的是重构你的代码,这样你只需要在那里执行一个查询而不是循环中的几个查询,然后你就可以从数据库查询回调中执行res.send。 / p>

尝试使用类似这样的东西作为构建块而不是for循环:

res.send