2017-01-26 1 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 и т. д. Но ошибок не видно.

АдаптерError сообщает мне, что формат ошибки не в формате JSON API. Но от того, что я могу видеть, это:

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

Наконец, я использую RESTAdapter адаптеры/application.js:

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

 Смежные вопросы

  • Нет связанных вопросов^_^