使用Ember Data,我該如何測試模型實例是否已經存在於本地存儲中?假設Ember Data型號爲App.User = DS.Model.extend({ ... })
。如何檢查本地存儲中是否存在Ember Data模型實例?
someUser = App.User.find(someId)
根據在本地存儲中是否存在someId
的記錄,可能會或可能不會向遠程服務器發出XHR。在發佈XHR之前,我想首先檢查當地商店是否存在這樣的記錄。
使用Ember Data,我該如何測試模型實例是否已經存在於本地存儲中?假設Ember Data型號爲App.User = DS.Model.extend({ ... })
。如何檢查本地存儲中是否存在Ember Data模型實例?
someUser = App.User.find(someId)
根據在本地存儲中是否存在someId
的記錄,可能會或可能不會向遠程服務器發出XHR。在發佈XHR之前,我想首先檢查當地商店是否存在這樣的記錄。
儘管沒有爲特定的id
挖掘商店的緩存效率,DS.Model
附帶all()
方法,該方法在此情況下是乾淨和有用的。 App.User.all()
返回一個包含所有已知User
記錄,這樣的一種方式來檢查與給定id
記錄的存在濾波陣列如下:
var isLoaded = App.User.all().some(function(user) {
return user.get('id') === someId;
});
這可以在模型的'find'方法中使用嗎?我試圖通過添加延遲來模擬ajax請求,但是如果已經請求,我想從商店返回模型。 –
我不明白爲什麼不這樣做,但請記住,這是檢查記錄存在的非常低效的方法。你不會想爲每個find找到這個。 Ember-Data內部的某個地方是一個哈希,它的檢查速度會快得多。 – ahmacleod