从.then连接到mongodb

从.then连接到mongodb

问题描述:

您好我想连接到mongo数据库来检查用户是否已经注册或如果不是,我想保存用户phone_number并为他的登录做一个代码,如果他已经注册我想只是发送代码登录 的问题是,当我写的代码不检查(如果)语句,并继续到另一端,发送空的错误从.then连接到mongodb

userModel.findOne({phone_number: req.body.phone_number}).then(function (err, res) { 
     console.log('if start'); 
     if (err) { 
      res.send(err) 
     } else { 
      if (res.length){ 
       codeModel.create({ 
        phone_number: req.body.phone_number, 
        code_Number: Math.floor((Math.random() * 5000) + 1000) 
       }).then(function (created) { 
        console.log('response then'); 
        res.status(200).send(created); 
       }) 
      } 
      else { 
        console.log("blah blah blah"); 
        userModel.create(req.body).then(function (jobs) { 
         res.status(200).send(jobs) 
        }) 
       } 
     } 
+1

['然后()'](https://developer.mozi lla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)没有'(err,res)'它只有'res'。 ''.catch()'。](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch)处理'err'。同样通过你的“模型”命名和'.create()'方法,这将是“猫鼬”。 –

+0

是的,它是猫鼬所以如果我修正你说我的代码应该罚款? –

+1

你应该阅读这些链接。承诺与回调不同。逻辑中还存在延续问题。但一次只能一步。 –

我发现它自己的错误做然后放置它应该是功能

userModel.findOne({phone_number:req.body.phone_number},function (err, user) { 
     if (err){ 
      res.status(400).send(err) 
     } 
    }).then(function (result) { 
     console.log(result + " data "); 
      console.log('user'); 
      if (result == null || result == ''){ 
       //user peida nashod 
       console.log('peida nashod'); 

       userModel.create(req.body).then(function (resp) { 
        console.log(resp + " resp "); 
       }).catch(next); 

       codeModel.create(req.body).then(function (code) { 
        console.log(code); 
        res.status(200).send({ 
         message:"afarin", 
         code: code 
        }) 
       }).catch(next) 
      } 
      else { 
       codeModel.create(req.body).then(function (code) { 
        console.log(code); 
        res.status(200).send({ 
         message:"afarin", 
         code: code 
        }) 
       }).catch(next) 
      } 

    }).catch(next)