为了账号安全,请及时绑定邮箱和手机立即绑定

处理错误时如何在ember-data中设置自定义响应json

处理错误时如何在ember-data中设置自定义响应json

芜湖不芜 2023-05-18 09:56:18
我现在正在使用:ember: 3.8.1ember-data: 3.10.0我正在尝试从 Grails API 发送带有一些附加数据的错误响应。它看起来像这样:respond(    status: HttpStatus.UNPROCESSABLE_ENTITY,     errors: errors    additionalData: someMap)在 Ember 的前端,我试图通过以下方式捕获它:object.save().then(function () {    // (...)}).catch((response) => {    // Here I want to access "response.additionalData"    // (...)});现在,我知道ember-data它有自己的方式来处理和绑定错误响应(https://davidtang.io/2016/01/09/handling-errors-with-ember-data.html),但ember-data: 2.10.0我能够捕捉到并在 catch with 中使用附加数据处理错误response.additionalData。在我使用的版本中,我response.additionalData总是undefined无法以任何方式获得它。它来自后端,因为我可以在浏览器开发工具中看到它作为响应。我怎样才能在最新的情况下实现这一目标ember-data?我确实尝试编写adapter和覆盖handleResponse函数,但即使是我自己的 CustomErrorClass 仍然像原生的一样。任何帮助,将不胜感激。提前致谢!
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

起初,这没有帮助,服务器的回答是:

Error: Assertion Failed: Your transport record was saved to the server, but the response does not have an id and no id has been set client side. Records must have ids. Please update the server response to provide an id in the response or generate the id on the client side either before saving the record or while normalizing the response.

然后我HttpServletResponse response像这样向对象添加响应状态:

response.status = HttpStatus.UNPROCESSABLE_ENTITY.value()

所以完整的响应部分看起来像这样:

response.status = HttpStatus.UNPROCESSABLE_ENTITY.value()

render([errors: [[status: HttpStatus.UNPROCESSABLE_ENTITY,

                  title : e.message,

                  detail: message,

                  meta  : [additionalData: additionalData]]

]] as JSON)

另请注意,为了使 JSONAPI 格式有效,errors内容位于双括号中。[[


有了这个,我终于得到了成员的正确答案meta:

spacer.gif

查看完整回答
反对 回复 2023-05-18
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信