我遇到问题使用JSON-API处理错误,我完成了文档中写的所有步骤,但它不起作用。
我有模特:
var user = this.get('store').createRecord('user', {
'email': 'test@test.com',
'name': 'Lorem ipsum',
'password': '123',
});
user.save().then(function(){
...
}).catch(function(data){
console.log(user.get('errors'), data);
// data is ErrorClass with deserialize errors inside
});
API响应(422 Unprocessable Entity
):
{
"errors":[
{
"detail":"Email address must be between 6 and 128 characters in length",
"source":{
"pointer":"/data/attributes/password"
}
}
]
}
在这种情况下,isError
标记为false
,user.get('errors')
- > empty
我也尝试使用500 Internal Server Error
代码
在这种情况下,isError
标记为true
(按预期方式),错误对象包含在adapterError
那么我做错了什么或试图检查什么, 提前谢谢
答案 0 :(得分:1)
至于isError
标志,如果您获得验证错误(具有422代码的错误),则不应该是true
。它在docs中描述。
您的主要问题是您在开始时有一个冗余的正斜杠。因此,您必须将此"pointer":"/data/attributes/password"
更改为此"pointer":"data/attributes/password"
完成此更改后,您将能够通过user.get('errors.password');
希望它有所帮助!