1

我正在尝试在一个请求中创建具有关联记录的记录。如果某些嵌套记录有验证错误,我想访问该记录上的适当错误。我正在使用 json-api 适配器,那么后端错误的格式应该是什么?我正在尝试这样的事情,但没有运气:

{"errors":[
  {
    "detail": "can't be blank",
    "source": {
      "pointer":"data/relationships/steps/0/data/attributes/est_threshold"
    }
  }
]}

根据这一行,它应该以某种方式实现: https ://github.com/emberjs/data/blob/master/addon/adapters/errors.js#L7

有任何想法吗?

4

2 回答 2

0

所以它似乎还没有实施。我在模型 mixin 中发现了一种 hackish 方法:

`import Ember from 'ember'`

RelatedErrors = Ember.Mixin.create

  save: ->
    @_super().catch (resp) =>
      resp.errors.forEach (err) =>
        if [_, rel, idx, attr] = err.source.pointer.match /^data\/relationships\/(\w+)\/(\d+)\/data\/attributes\/(\w+)$/
          @get(rel).objectAt(idx).get('errors').add(attr, err.detail)

`export default RelatedErrors`

但是,add不推荐使用 on DS.Errors,因此这仍然不是一个完美的解决方案。同样需要在每次提交之前清除相关模型的无效状态,目前还没有发生。

于 2016-04-06T15:45:31.817 回答
0

您需要在数据中旁加载嵌套记录。ember 指南中给出的示例结构是:

{
  "post": {
    "id": 1,
    "title": "Node is not omakase",
    "comments": [1, 2, 3]
  },

  "comments": [{
    "id": 1,
    "body": "But is it _lightweight_ omakase?"
  },
  {
    "id": 2,
    "body": "I for one welcome our new omakase overlords"
  },
  {
    "id": 3,
    "body": "Put me on the fast track to a delicious dinner"
  }]
}

https://guides.emberjs.com/v1.10.0/models/the-rest-adapter/

于 2016-04-04T17:39:09.297 回答