【发布时间】:2018-04-13 16:42:02
【问题描述】:
我的 Node.js express 应用中有以下代码:
router.route('/user')
.post(async function(req, res) {
if(req.body.password === req.body.passwordConfirm) {
try {
var response = await userManager.addUser(req.body);
res.status(201).send();
} catch(err) {
logger.error('POST /user failed with error: '+err);
res.status(500).send({err:"something went wrong.."});
}
} else {
res.status(400).send({err:'passwords do not match'});
}
})
和用户管理器:
var userManager = function() {
this.addUser = async function(userobject) {
userobject.password_hash = await genHash(userobject.password_hash);
var user = new User(userobject);
return await user.save();
};
};
module.exports = userManager;
我的问题是:路由中的 try catch 块是否会捕获 addUser 中抛出的所有错误,还是只会捕获 user.save() 中抛出的错误>,因为那是返回的那个?
【问题讨论】:
-
addUser是一个async function,因此从不抛出异常。它只会返回一个可能被拒绝的承诺。 -
只有当你
await你的addUser打电话... -
啊,不错,我忘了在那儿添加它!
标签: node.js promise async-await