2013-06-12 78 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

相關問題