提问人:duyvan 提问时间:7/10/2023 最后编辑:duyvan 更新时间:7/10/2023 访问量:59
在回调函数中检索数据
Retrieve data in callback function
问:
我是JS的新手,将duckdb与NodeJS一起使用,我在回调函数中收到响应,并能够控制台.log出数据
结果
db.all('SELECT sku, sum(sales) as sales from B group by all', function(err, responses) {
const newData = []
if (err) {
throw err;
}
else{
for(let row of responses) {
newData.push(row)
console.log(row)
}
}
});
{ sku: 'C', sales: 30 }
{ sku: 'A', sales: 35 }
{ sku: 'B', sales: 20 }
我尝试的下一行代码
console.log(newData)
但它失败了
ReferenceError: newData is not defined
答:
-1赞
Hegel Motokoua
7/10/2023
#1
您遇到的问题是由于 newData 变量的作用域。目前,newData 变量是在回调函数中声明的,这意味着它只能在此代码块中访问。
若要解决此问题,可以在回调函数外部声明 newData 变量,以便在整个代码主体中都可以访问该变量。这是你如何做到的:
// Declare newData outside the callback function
const newData = [];
db.all('SELECT sku, sum(sales) as sales from B group by all', function(err, responses) {
if (err) {
throw err;
} else {
for (let row of responses) {
newData.push(row); // Append the data to newData
console.log(row);
}
}
});
console.log(newData); // Now newData can be accessed here
通过此更改,newData 变量将可以在回调函数外部访问,您可以使用它在查询后显示数据或执行其他操作。
评论
0赞
NotTheDr01ds
7/10/2023
欢迎回到 Stack Overflow。看起来你已经有一段时间没有发帖了,可能不知道当前的政策,因为你今天的两个答案似乎可能完全或部分是由人工智能(例如,ChatGPT)编写的。请注意,此处禁止发布 AI 生成的内容。如果您使用 AI 工具来帮助回答任何答案,我鼓励您删除它。谢谢!
0赞
NotTheDr01ds
7/10/2023
读者应该仔细和批判性地审查这个答案,因为人工智能生成的信息通常包含根本性的错误和错误信息。如果您发现质量问题和/或有理由相信此答案是由 AI 生成的,请留下相应的反馈。审核团队可以使用您的帮助来识别质量问题。
0赞
duyvan
7/10/2023
#2
我重构了代码,它仍然无法按预期工作
// Declare newData outside the callback function
const newData = [];
db.all('SELECT sku, sum(sales) as sales from B group by all', function(err, responses) {
if (err) {
throw err;
} else {
for (let row of responses) {
newData.push(row); // Append the data to newData
console.log(row);
}
}
});
console.log("newData", newData); // Now newData can be accessed here
它显示
newData []
{ sku: 'C', sales: 30 }
{ sku: 'A', sales: 35 }
{ sku: 'B', sales: 20 }
我相信它会在 newData 将新对象推送到它之前控制台.log newData。
评论