如何在ember-data中获取HTTP StatusCodes

Rob*_*uch 1 ajax asynchronous ember.js ember-data

当我调用

 App.store.createRecord(App.User,  { name: this.get("name") });
 App.store.commit();
Run Code Online (Sandbox Code Playgroud)

我怎么知道它是否成功以及如何等待asyn消息?

Ian*_*nce 9

最近在ember-data master中的DS.RESTAdapter中添加了非常有限的错误处理.

创建或更新记录(禁用批量提交)并返回400到599之间的状态代码时,将发生以下情况:

  • A 422 Unprocessable Entity会将记录转换为"无效"状态,并将从服务器返回的任何错误添加到记录的errors属性中.

    适配器假定服务器将使用以下格式的JSON响应:

    {
      errors: {
        name: ["can't be blank"],
        password: ["must be at least 8 characters", "must contain a number"]
      {
    }
    
    Run Code Online (Sandbox Code Playgroud)

    (错误消息本身可能是字符串数组或只是字符串.目前,ember-data不关心哪个.)

    要检测此状态:

    record.get('isValid') === false
    
    Run Code Online (Sandbox Code Playgroud)
  • 所有其他状态代码将记录转换为"错误"状态.

    要检测此状态,请使用:

    record.get('isError') === true
    
    Run Code Online (Sandbox Code Playgroud)

更多的情况最终可能由ember-data开箱即用,但目前如果您需要特定的东西,您将不得不扩展DS.RESTAdapter,自定义其didError功能以自行添加.