器中添加条件以检查电子邮件是否已经存在?"/>
如何在注册控制器中添加条件以检查电子邮件是否已经存在?
当用户尝试注册并输入详细信息时,将调用此API。我正在查看是否可以添加一个条件,说明电子邮件已经存在。
我想我需要类似的东西:
const user = await User.find({ email })
if (user) {
res.status(400).json({ message: "User with this already exists" })
}
但是我正在创建一个新用户,因此应将上述查询放在哪里。我对执行顺序感到困惑。
module.exports = {
registerUser: async(req, res, next) => {
try {
var {
username,
email,
password
} = req.body
if (password) {
const salt = bcrypt.genSaltSync(10)
password = bcrypt.hashSync(password, salt)
}
if (!username || !email || !password) {
return res
.status(400)
.json({
message: "Username, email and password are must"
})
}
if (!validator.isEmail(email)) {
return res.status(400).json({
message: "Invaid email"
})
}
if (password.length < 6) {
return res
.status(400)
.json({
message: "Password should be of at least 6 characters"
})
}
const user = await User.create({
username,
email,
password
})
if (!user) {
return res.status(404).json({
error: "No user found "
})
}
return res.status(200).json({
user
})
} catch (error) {
return next(error)
}
}
回答如下:将其放置在注册逻辑之前的try
块内,因为如果电子邮件不存在,则find
可能会引发抛出和错误。
更多推荐
如何在注册控制器中添加条件以检查电子邮件是否已经存在?
发布评论