标题说明一切我尝试了所有但是变量只是返回未定义在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);