问题描述
标题说明了一切我都试过了,但变量只是在 console.log 返回 undefined
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
解决方法
您记录 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);