gpt4 book ai didi

node.js - TypeError : Cannot read property 'ref' of undefined | Express

转载 作者:行者123 更新时间:2023-12-03 08:27:20 25 4
gpt4 key购买 nike

我正在使用Node express和mongodb。我试图能够遍历显示页面的所有相关属性。我的代码是

Desktop.find({}, function(err, allDesktop) {
if(err){
console.log(err);
} else {
console.log(allDesktop); // #1
res.locals.desktops = allDesktop; // Set the data in locals
}
});
console.log("res.locals.desktops: ", res.locals.desktops); //#2

该代码是路由的一部分,#1 console.log注销所有正确的结果。但是 console.log#2返回 undefined。为什么是这样?我知道我在完全相同的路线的其他地点都设置了相似的名称,但是改为 res.locals.laptops
我在这里想念什么?

最佳答案

这与Event Loop有关。简而言之,Desktop.find()将执行,但是您不知道何时完成。

那就是您的回调起作用的地方:function(err, allDesktop) {}。当Desktop.find()完成执行时,将调用回调。

因此,代码从上到下进行评估,结果res.locals.desktopsundefined。这样的事情应该可以解决您的问题:

Desktop.find({}).exec()
.then(allDesktop => {
res.locals.desktops = allDesktop
return Promise.resolve()
})
.then(() => {
console.log(res.locals.desktops)
})
.catch(err => console.error(err))
.exec()返回一个 MongooseThenable,它实际上是一个 Promise

关于node.js - TypeError : Cannot read property 'ref' of undefined | Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com