【发布时间】:2019-10-04 14:21:36
【问题描述】:
我正在开发一个基本的 Node 应用程序,我遇到了一个我认为并不新鲜但我不明白哪种方法才是正确的解决方法。我需要处理那些不是由代码、网络或数据库生成但应用程序逻辑需要的错误。作为示例,我使用 已经注册的用户,但在应用程序的不同情况下将需要相同的处理。
我从登录组件中的方法开始:
register () {
API
.register(this.credentials)
.then(
data => {
this.user = data;
},
error => {
this.error = error;
})
.catch(error => {
this.error = error;
});
},
API 是:
register (credentials) {
return Axios
.post('/auth/register',credentials)
.then(response => {
return response.data;
})
},
后端是:
router.post('/auth/register',(req,res) => {
User.findOne({where:{username:req.body.username}})
.then(user => {
if (!user) {
User
.create(req.body)
.then(user => {
res.send(user);
})
} else {
throw 'Username already exists';
}
});
});
我期望的是错误
throw '用户名已经存在';
(但它可能是没有为您的搜索找到数据)被传递回捕获它的组件并显示错误而不是注册用户。
我尝试在每个 then 之后添加 catch 或使用 res.send({error:...}) 而不是 throw 但这样组件将错误消息显示为用户对象。
【问题讨论】:
标签: node.js express vue.js sequelize.js axios