簡體   English   中英

Ember-data:關系驗證錯誤(hasMany)

[英]Ember-data: validation errors on relationships (hasMany)

我正在嘗試在一個請求中創建包含相關記錄的記錄。 如果某些嵌套記錄有驗證錯誤,我想訪問該記錄上的相應錯誤。 我正在使用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

有任何想法嗎?

您需要在數據中加載嵌套記錄。 余燼指南中給出的示例結構為:

{
  "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/

所以它似乎還沒有實現。 我發現在模型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`

但是,不推薦在DS.Errors上add ,因此這仍然不是一個完美的解決方案。 在每次提交之前,還需要清除相關模型的無效狀態,這種情況到目前為止還沒有發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM