2016-04-04 15 views
1

1回のリクエストで関連するレコードでレコードを作成しようとしています。ネストされたレコードの一部に検証エラーがある場合は、そのレコードの適切なエラーにアクセスしたいと思います。私はjson-apiアダプタを使用していますので、バックエンドからのエラーの形式はどうなりますか?私も運で、このような何かをしようとしている: Ember-data:関係の検証エラー(hasMany)

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

任意のアイデア?

答えて

0

データにネストされたレコードを横向きに配置する必要があります。燃えさしガイドに与えられた例の構造は次のとおりです。

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

+0

質問はデータの読み込みではなく、検証エラーに関するものでした。私はjson-apiアダプタを使用しています。 –

+0

ああ、謝罪、私はそれをもっと慎重に読んでいたはずです。投稿したJSONが無効である可能性がありますか?閉じた角カッコがないように見えます。 – TheCompiler

+0

ああ、書式設定の問題です。私が投稿したときは1行になっていたので、読みやすくするために書式を変更しました。したがって、角カッコの付いたサーバから来ます。 –

0

だから、まだ実装されていないようです。

`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が廃止されましたので、これはまだ完璧なソリューションではありません。私は、モデルミックスインであることを行うためにちょっとハック方法を見つけました。関連するモデルの無効な状態も、各コミットの前にクリアする必要がありますが、それはこれまでには起こっていません。