我无法到达mongodb函数外声明的变量



标题说明一切我尝试了所有但是变量只是返回未定义在console.log

var kategorilerArray;
dbo.collection("anasayfaKategoriler").find().sort(mysort).toArray(function (err, resultKategoriler) {
if (err) throw err;
kategorilerArray = resultKategoriler;
//console.log(kategorilerArray);
});
console.log(kategorilerArray); // > undefined

记录未定义的原因是因为这是JS的工作方式,这意味着代码行将在categororilerarray赋值之前发生。该行将在回调之前运行(toArray函数接收回调),然后才会对categororilerarray进行赋值。

您可以通过在toArray回调函数中添加categororilerarray赋值来修复它,或者等待toArray函数然后进行赋值。

这是JS事件循环的一部分。

你可以在这篇文章中阅读更多关于它的内容:https://blog.sessionstack.com/how-javascript-works-event-loop-and-the-rise-of-async-programming-5-ways-to-better-coding-with-2f077c4438b5

我修复了它,只需声明express app.post async

var yorumlarArray = await dbo.collection("yorumlar").find().sort(mysort).toArray();
var kategorilerArray = await dbo.collection("anasayfaKategoriler").find().sort(mysort).toArray();
console.log(kategorilerArray);

最新更新