Ember Data 1.13 findAll无法正常工作

时间:2015-09-15 04:52:22

标签: ember.js ember-data

我刚刚开始使用Ember 2.0,我正在尝试使用Ember Data构建一个简单的CRUD应用程序。我一直在网上关注Ember指南,但我遇到了一个问题。

我在我的routes / application.js文件中使用this.store.push将默认数据填充到我的商店中。我立即使用this.store.findRecord(modelName, id)后,似乎我的数据成功持久:

enter image description here

但是,当我使用this.store.findAll(modelName)时,由于"适配器操作失败而得到404,"错误:

enter image description here

我已经做了一些搜索,但由于这样一个模棱两可的错误,我没有多少运气。如果有人有任何见解,我将非常感激!这是我用来创建控制台输出的代码:

var wine = this.store.findRecord('wine', 5);
var wines = this.store.findAll('wine');
console.log(wine);
console.log(wines);

我正在创建的模型示例:

this.store.push('wine', {
  id: '5',
  name: 'Pink Moscato',
  vintage: '2014',
  description: 'The wine has aromas of Mandarin orange and sweet ' +
    'jasmine. It has subtle flavors of cherry, raspberry, and ' +
    'pomegranate.',
  imageUrl: 'https://placehold.it/290x290'
});

1 个答案:

答案 0 :(得分:1)

this.store.findAll(modelName)会向您的API后端发出HTTP请求。根据我的阅读,似乎您没有API服务器,并且您只使用store.push来模拟Ember数据中的数据。所以,我建议你使用:

this.store.peekAll(modelName)不会触发任何请求,并会为您提供本地数据。

  

我发现findRecord有效,而findAll没有。

findRecord适用于您而findAll不适用,因为findRecord尝试获取本地版本的记录,这已经存在于您的案例中(您使用store.push)并尝试在后台重新加载记录以获取最新数据(您应该在您的开发工具中看到即使使用findRecord请求也会触发刷新它的数据。)

findAll也被缓存,但它在第一次调用时会触发请求。

I recommend you to see my previous answer for more info and details of peekAll and findAll.

  

此外,在这种情况下,API服务器的示例是什么?

取决于您是否要使用RESTAdapterJSONAPIAdapter。如果RESTAdapter您的API服务器(到findAll('wine'))的示例响应可能是:

{
    "wines": [
        {
            "id": 5,
            "name": "Pink Moscato",
            "vintage": "2014",
            "description": "text",
            "imageUrl": "https://placehold.it/290x290"
        }
    ]
}
  

我的印象是Ember Data可以单独使用。

是的,它可以单独使用,但你需要调整Adapter