我无法访问在 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);
标题说明了一切我都试过了,但变量只是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);