Ember Data在GET上创建返回404的本地记录

时间:2014-12-04 23:12:46

标签: ember.js ember-data http-status-code-404

当我请求返回404(或403)的单个资源时,Ember Data正在创建本地记录。

例如,我在/items/123处从头开始加载我的应用。适配器请求GET /items/123,这会产生404,但现在我的本地商店中有item记录id=123。所有属性都是undefined期望模型定义默认值的位置。

此外,所有模型标记均为falseisValid除外true

这是例外行为吗?即使服务器说它不存在(或者不允许用户看到它),本地记录也会被创建,这似乎很奇怪。

详细

我正在运行Ember 1.8.1 和Ember Data 1.0.0-beta.11

这就是我对路线的基本要求:

// itemsRoute, TOP LEVEL
model: function() {
  return this.store.find('item');
}


// itemRoute, CHILD LEVEL
model: function(params) {
  return this.store.find('item', params.item_id); // <-- this returns 404
},
actions: {
    error: function(err) {
      this.replaceWith('items'); // jump out to main list view
      return true; // ensure error bubbles up
    }
}

model挂钩中的拒绝正常,因为error操作已触发,我已重定向到顶级/items视图。但我仍然最终得到了item不存在的本地记录。

2 个答案:

答案 0 :(得分:0)

在考虑了这个之后......尝试改变itemRoute中的错误处理程序来自...

actions: {
    error: function(err) {
      this.replaceWith('items'); // jump out to main list view
      return true; // ensure error bubbles up
    }
}

为...

actions: {
    error: function(err) {
        this.transitionTo('items');  // jump out to main list view
        return false;  // Stop event bubbling - we've handled it.
        //You could also console.log parts or all of your error

        //You can return true too if you want to keep the event bubbling.
    }
}

我没有具体理由说明为什么会这样。如果有效,请等待您的回复。

答案 1 :(得分:0)

这绝对是一个错误。这似乎在一段时间后得到了解决,但正如3月14日的更改所重新引入的那样。

我已提交错误报告https://github.com/emberjs/data/issues/3085