【发布时间】:2021-05-16 14:53:14
【问题描述】:
我正在尝试使用passport-jwt 策略进行身份验证。
这是我的代码:-
router.post('/register', async (req, res) => {
const { username, email } = req.body;
try {
const user = await User.findOne({ username });
if (user) {
throw new Error('User with same username already exists !!');
}
const newUser = new User({
username,
email
})
const salt = await bcrypt.genSalt(10);
newUser.password = await bcrypt.hash(req.body.password, salt);
const savedUser = await newUser.save();
res.json({
status: 200,
'Content-Type': 'Application/Json',
'message': `You have successfully regirstered yourself, ${savedUser.username}!`
})
} catch (err) {
err.statusCode = 500;
console.log(err.message);
res.header({
status: '200',
'Content-Type': 'Application/Json',
});
res.json(err);
}
});
现在这条路线工作得很好,到目前为止它正在做所有事情。唯一的问题是,当我找到现有用户时,我想用自定义消息抛出一个新错误。 Javascript 有这个 Error 类,我可以用它来抛出这些错误。
当它捕获错误时会出现问题。当我console.log(err.message) 时,我可以完美地看到我的自定义消息。但是我通过res.json(err)返回的err对象没有任何message,而只有statusCode。
我想知道为什么会这样,解决办法是什么?现在,我正在做这样的事情:-
res.json({
statusCode: 500,
message : err.message
});
但我想返回填充了statusCode 和message 字段的err 对象。
【问题讨论】:
标签: javascript node.js try-catch