gpt4 book ai didi

javascript - 无法将数据插入组合数据数组

转载 作者:行者123 更新时间:2023-11-28 05:55:06 24 4
gpt4 key购买 nike

我无法将数据推送到闭包函数内的组合数据数组中。我发现我需要对与数据库相关的程序使用闭包。我是 Node 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);

最佳答案

我假设“无法推送”意味着您推送到 combineddata 中的 “examplepush” 未显示在您的 HTTP 响应中。这是因为数据库查询是异步执行的,回调中的推送代码实际上是在您完成 res.send 并从处理程序返回后运行的。

您可以重构您的代码,以便您只需要在那里执行一个查询,而不是循环中的多个查询,然后您就可以从数据库查询回调中执行 res.send。

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

var testIds = data.map(function (elem) { return elem.Testid });
teststats.addTestStats.find({Testid: {$in: testIds}}, function (err, testdata) {
res.send(testdata) // Testdata is now an array matching all Testid's you queried for
}

关于javascript - 无法将数据插入组合数据数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com