使用mongoose查询结果更改可变值



我有代码漏洞,需要用projectsDocument替换"doc"(查询结果(,但是函数中没有定义projectsDocument,请帮帮我!!!!

var projectsDocument, categoryDocument; //empty
projectsModel.find({}, {}, (err, doc) => {
if (err) return next(err);
if (doc) {
projectsDocument = doc; 
}
});
console.log(projectsDocument); //want to projectsDocument be equals to doc

〔已解决〕

我把我的代码改成这个,它可以

router.get('/', async(req, res, next) => {
await projectsModel.find().then(function(doc) {
projectsDocument = doc;
}).catch(function(error) {
console.log(error);
});
});

因为Javascript本质上是异步的,这意味着它不同步执行指令,如API调用(不等待响应(。

Mongoose版本>4.0

projectsModel.find()
.then(function(doc){
if (doc) {
projectsDocument = doc; 
}
})
.catch(function(err) {})

Mongoose版本<4.0

var projects = projectsModel.find().exec() //returns promise
projects.then(function(project){
if (project) {
projectsDocument = project;
}
})

最新更新