我无法访问在 mongodb 函数之外声明的变量

I cannot reach to variable declared outside of mongodb function

标题说明了一切我都试过了,但变量只是returns未定义在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 的工作方式,这意味着该行代码将在 kategorilerArray 赋值之前发生。 该行将在回调之前 运行(toArray 函数接收该回调),然后才会发生对 kategorilerArray 的分配。

您可以通过在 toArray 回调函数中添加 kategorilerArray 赋值来修复它,或者等待 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);