2017-01-26 1 views
1

Handling Errors with Ember DataとEmber JSのエラー処理の解決方法に関するヒントを数多く教えても、手始めにアサーションに失敗しました: `AdapterError`はjson-apiでフォーマットされたエラーを予期していますarray

、私はそうのようなユーザモデルがあります:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    firstName: DS.attr('string'), 
    surName: DS.attr('string'), 
    email: DS.attr('string'), 
    plainPassword: DS.attr('string') 
}); 

もちろん、私は、サーバーからパスワードを返しませんが、私は登録フォームからそれを送信するためのモデルで必要とされると仮定します。とにかく、後で。

フォームテンプレートは、次のようになります。

<!-- start Register --> 
<div class="container-fluid"> 
    <form name="form_register" {{action 'submit' on="submit"}} class="form-register" novalidate="novalidate"> 
     <div class="col-md"> 
      <label class="el-input-wrap"> 
       First Name 
       {{input class="el-input" placeholder='firstName' value=model.firstName}} 
      </label> 
      <label class="el-input-wrap"> 
       Last Name 
       {{input class="el-input" placeholder='surName' value=model.surName}} 
      </label> 
     </div> 
     <div class="col-md"> 
      <label class="el-input-wrap"> 
       Email 
       {{input class="el-input" placeholder='email' value=model.email}} 
      </label> 
      <label class="el-input-wrap"> 
       Password 
       {{input class="el-input" placeholder='password' value=model.plainPassword type='password'}} 
      </label> 
     </div> 
     <div class="col"> 
      <label class="el-checkbox"> 
       By registering I agree to the terms and conditions 
      </label> 
     </div> 
     <button type="submit" class="el-btn mod-full-w">REGISTER</button> 
    </form> 
</div> 
<!-- end Register --> 

次は私が登録フォームを扱う合わせコントローラがあります。ここでは

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    actions: { 
     cancel() { 
      this.get('model').deleteRecord(); 
      return true; 
     }, 

     submit() { 
      var user = this.get('model'); 
      user.save().then(
       () => this.transitionToRoute('register') 
      ).catch((adapterError) => { 
       console.log(adapterError); 
      }); 
     } 
    } 
}); 

を、私は、エラーをエラーをCONSOLE.LOGしようとしています。ファーストネームなど。しかし、エラーは表示されません。

adapterErrorは、エラー形式がJSON API形式ではないことを示しています。しかし、私は見ることができるものから、それは次のとおりです。

{ 
    "errors": { 
     "source": { 
      "pointer": "user\/email" 
     }, 
     "detail": "user.email.not_blank" 
    } 
} 

最後に、私はアダプター/ application.jsにRESTAdapterを使用しています:私の人生のために

import DS from 'ember-data'; 
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin'; 

export default DS.RESTAdapter.extend(DataAdapterMixin, { 
    namespace: 'app_dev.php/api', 
    authorizer: 'authorizer:token', //or authorizer: 'authorizer:jwt' 
}); 

、私は何を把握することはできません間違っている。私は何か助けや指針を非常に感謝します。ありがとうございました。

答えて

1

私はエラー配列を返さなかったということだけです。正確なエラー対応は次のとおりです:

{ 
    "errors": [{ 
     "source": { 
      "pointer": "user\/firstName" 
     }, 
     "detail": "user.first_name.not_blank" 
    }, { 
     "source": { 
      "pointer": "user\/surName" 
     }, 
     "detail": "user.sur_name.not_blank" 
    }, { 
     "source": { 
      "pointer": "user\/email" 
     }, 
     "detail": "user.email.not_blank" 
    }] 
} 
関連する問題