猿问

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

我现在正在使用:

  • ember: 3.8.1

  • ember-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 仍然像原生的一样。


任何帮助,将不胜感激。提前致谢!


芜湖不芜
浏览 132回答 1
1回答

蓝山帝景

起初,这没有帮助,服务器的回答是: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:
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答