我最近开始使用nodejs,我发现的每个代码都使用不同的结构。我想知道使用 try/catch 和 async/await 是否有任何问题以及应该如何进行错误处理。
module.exports = {
register: async function(req, res) {
try {
// Check if username already exists
const usernameDB = await User.findOne({ username: req.body.username });
if (usernameDB) throw new Error('Username already exists');
// Check if email already exists
const emailDB = await User.findOne({ email: req.body.email });
if (emailDB) throw new Error('Email already exists');
// Hash the password
const salt = await bcrypt.genSalt(8);
const hashPassword = await bcrypt.hash(req.body.password, salt);
// Create a new User
const newUser = new User({
username: req.body.username,
email: req.body.email,
password: hashPassword
});
const savedUser = await newUser.save();
if (!savedUser) throw new Error('Could not register you account, try again');
res.status(201).send({
success: true,
message: 'Registered successfully'
});
}
catch (err) {
res.status(400).send({
success: false,
name: err.name,
message: err.message
});
}
}
}
在上面的示例中,我感觉自己滥用了“将某些内容保存到变量中,检查它,如果没有,则抛出并错误”。
最佳答案
这样做实际上是可以的,但如果我是你,我会将你在 catch block 中编写的这些逻辑分离到单独文件中的 Controller 函数中。除此之外,这还可以。
关于javascript - 在nodejs中使用if条件然后抛出错误是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57882754/