微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。