猿问

如何解决node.js异步问题?

代码:

User.findOne({name: name}, function(err, user){

    if(err) {

      console.log(err);

      data.data = "发生未知错误"

      data.status = 1001

    }

    if(!user){

      console.log(user)

      data.data = "用户不存在"

      data.status = 1002

    }

    else{

      user.comparePassword(password, function(err, isMatch) {

        if(err) {

          console.log(err);

          data.data = "发生未知错误"

          data.status = 1001

        }

        if(isMatch) {

          data.data = "登录成功"

          data.status = 1000

        }

        else {

          data.data = "密码不正确"

          data.status = 1003

        }

      })

    } 

    res.send(data)   

  }) 

问题:数据库用的mongodb,建模工具用的mongoose,这里由于nodejs的异步机制,导致最后res.send(data)发送的数据永远是data:{data: '', status: 1000 },请问一下怎么写才能够让代码顺序执行,得到正确的data值?

qq_笑_17
浏览 399回答 1
1回答

犯罪嫌疑人X

mongoose现在都是promise的了 建议采用async awaitasync funcName() {const user = await User.findOne({}); // await 后面接promise对象........res.send(...data);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答