2013-06-12 44 views
3

使用Ember Data,我该如何测试模型实例是否已经存在于本地存储中?假设Ember Data型号为App.User = DS.Model.extend({ ... })如何检查本地存储中是否存在Ember Data模型实例?

someUser = App.User.find(someId)根据在本地存储中是否存在someId的记录,可能会或可能不会向远程服务器发出XHR。在发布XHR之前,我想首先检查当地商店是否存在这样的记录。

回答

3

尽管没有为特定的id挖掘商店的缓存效率,DS.Model附带all()方法,该方法在此情况下是干净和有用的。 App.User.all()返回一个包含所有已知User记录,这样的一种方式来检查与给定id记录的存在滤波阵列如下:

var isLoaded = App.User.all().some(function(user) { 
    return user.get('id') === someId; 
}); 
+0

这可以在模型的'find'方法中使用吗?我试图通过添加延迟来模拟ajax请求,但是如果已经请求,我想从商店返回模型。 –

+0

我不明白为什么不这样做,但请记住,这是检查记录存在的非常低效的方法。你不会想为每个find找到这个。 Ember-Data内部的某个地方是一个哈希,它的检查速度会快得多。 – ahmacleod

相关问题