从.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)
})
}
}
答
我发现它自己的错误做然后放置它应该是功能
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)
['然后()'](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()'方法,这将是“猫鼬”。 –
是的,它是猫鼬所以如果我修正你说我的代码应该罚款? –
你应该阅读这些链接。承诺与回调不同。逻辑中还存在延续问题。但一次只能一步。 –