查询使用查询时未缓存的ember-data存储

时间:2016-01-14 18:18:33

标签: ember.js ember-data

在我的ember-app的/ photos路由中,我可以看到,如果我使用查询功能,则记录不会来自本地indexedDB:

该路线有一个带有微调器的加载模板;

如果我在路线上:

model: function() {
    return this.store.findAll('photo');
}

记录仅在第一次加载;我看了一下旋转器然后照片就显示了;如果我继续沿着另一条路线返回照片路线,则不显示微调器,数据从本地indexedDB获取,并且在后台完成对REST api的新请求;

但如果我这样做

model: function() {
    return this.store.query('photo', {}});
}

我不仅是第一次看到旋转器,而且每次打开路线时都会看到旋转器; 所以我想再次获取数据

1 个答案:

答案 0 :(得分:2)

为了澄清,ember-data的目的是确保消耗的数据尽可能与服务器同步。因此调用findAll它将返回新数据以确保它没有改变。另一方面,您可以使用findRecordpeekRecordpeekAll等方法来控制 你想要从缓存或新加载的数据

peekRecord将从一个模型的缓存中专门加载数据。 http://emberjs.com/api/data/classes/DS.Store.html#method_peekRecord

如果您希望从要使用的缓存加载内容findRecord。如果未加载,它将发出请求,然后后续请求将来自缓存。

store.findRecord('filter', 1) http://emberjs.com/api/data/classes/DS.Store.html#method_findRecord

我还建议您使用ember inspector浏览器扩展来查看缓存中加载了哪些模型,以便更清晰。

如果您想查看模型的所有当前加载的内容,可以使用peekAll http://emberjs.com/api/data/classes/DS.Store.html#method_peekAll