1

私が呼び出すとき

 App.store.createRecord(App.User,  { name: this.get("name") });
 App.store.commit();

成功したかどうかを知る方法と、非同期メッセージを待つ方法を教えてください。

4

1 に答える 1

9

最近、非常に限定されたエラー処理がember-datamasterのDS.RESTAdapterに追加されました。

レコードを作成または更新し(バルクコミットが無効になっている場合)、400〜599のステータスコードが返されると、次のようになります。

  • A422 Unprocessable Entityは、レコードを「無効」状態に遷移させ、サーバーから返されたエラーをレコードのerrorsプロパティに追加します。

    アダプターは、サーバーが次の形式のJSONで応答することを前提としています。

    {
      errors: {
        name: ["can't be blank"],
        password: ["must be at least 8 characters", "must contain a number"]
      {
    }
    

    (エラーメッセージ自体は、文字列の配列または単なる文字列である可能性があります。ember-dataは現在どちらを気にしません。)

    この状態を検出するには:

    record.get('isValid') === false
    
  • 他のすべてのステータスコードは、レコードを「エラー」状態に移行します。

    この状態を検出するには、次を使用します。

    record.get('isError') === true
    

最終的には、箱から出してember-dataで処理されるケースが増える可能性がありますが、今のところ、特定のものが必要な場合は、関数をDS.RESTAdapterカスタマイズして自分で追加する必要があります。didError

于 2012-11-30T15:56:52.087 に答える