【问题标题】:How to get HTTP StatusCodes in ember-data如何在 ember-data 中获取 HTTP StatusCodes
【发布时间】:2012-11-28 17:03:13
【问题描述】:

当我调用时

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

我如何知道它是否成功以及如何等待异步消息?

【问题讨论】:

  • Ember-Data 目前不提供关于 HTTP 状态的错误处理,但它在路线图上。到目前为止,一种方法是扩展适配器以使用 jQuery Ajax statusCode 并为每个状态代码传递回调。 This question 在某种程度上与您的相似,但更多的是在错误处理方面。

标签: ajax asynchronous ember.js ember-data


【解决方案1】:

非常有限的错误处理是 recently added 到 ember-data master 中的 DS.RESTAdapter。

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

  • 422 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 函数以将其添加到自己中。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多