首页 > 解决方案 > 使用猫鼬查询结果更改变量值

问题描述

我有代码崩溃,需要用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);
    });

});

标签: javascriptnode.jsmongodbmongoose

解决方案


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

猫鼬版 > 4.0

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

猫鼬版本 < 4.0

var projects = projectsModel.find().exec() //returns promise

projects.then(function(project){
    if (project) {
       projectsDocument = project;
    }
})

推荐阅读