router.post('/register', async function (req, res) {
var body = req.body
try {
if (await User.findOne({ email: body.email })) {
return res.status(200).json({
err_code: 1,
message: '邮箱已存在'
})
}
if (await User.findOne({ nickname: body.nickname })) {
return res.status(200).json({
err_code: 2,
message: '昵称已存在'
})
}
// 对密码进行 md5 重复加密
body.password = md5(md5(body.password))
// 创建用户,执行注册
await new User(body).save()
res.status(200).json({
err_code: 0,
message: 'OK'
})
} catch (err) {
res.status(500).json({
err_code: 500,
message: err.message
})
}
})
网上看到的代码,用到的数据库是mongodb,想问一下if语句中await后面的findone方法不是普通的异步函数吗?那为什么await还会等待其执行完并拿到其返回的值呢?因为我的理解是await后面如果是promise的话,await会等待promise状态改变,但是后面如果是普通的异步函数不是不会等待吗?不知道我理解的对不对_(:з」∠)_
1.await 操作符用于等待一个 Promise对象,如果等待的不是 Promise 对象,则返回该值本身。
2.findOne 返回的是一个 Promise
参考链接:findOne、await