gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 07:51:47 25 4
gpt4 key购买 nike

我现在正在使用:

  • 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有自己的方式来处理和绑定(bind)错误响应( https://davidtang.io/2016/01/09/handling-errors-with-ember-data.html )但在 ember-data: 2.10.0我能够使用 response.additionalData 捕获的附加数据来捕获和处理错误.
    在我使用的版本中 response.additionalData总是 undefined我无法以任何方式得到它。
    它来自后端,因为我可以在浏览器开发工具中看到它作为响应。
    我怎样才能在最新的 ember-data 中实现这一点?
    我确实尝试写 adapter并覆盖 handleResponse功能,但即使是我自己的 CustomErrorClass 仍然像原生的一样。
    任何帮助,将不胜感激。
    提前致谢!

    最佳答案

    所以,我确实尝试了几个选项 meta JSONAPI 格式的成员,如下所述:

  • https://jsonapi.org/format/#document-meta

  • 起初,这没有帮助,服务器的答案是:
    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)
    另请注意 errors内容在双括号中 [[使 JSONAPI 格式有效。
    有了这个,我终于得到了 meta的正确答案。其中的成员:
    enter image description here

    关于javascript - 处理错误时如何在 ember-data 中设置自定义响应 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64372438/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com