2017-01-26 30 views
1

在閱讀Handling Errors with Ember Data和其他許多關於如何解決Ember JS錯誤處理的技巧和竅門後,我仍然無法弄清楚我的代碼出了什麼問題。斷言失敗:`AdapterError`預計json-api格式錯誤數組

對於初學者來說,我有一個用戶模型,像這樣:

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錯誤,錯誤。 firstName等等。但沒有錯誤顯示。

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" 
    }] 
}