我通过将JSON对象传递给商店的createRecord
方法创建的ember商店中的特定类型的模型有大量,大约100,000或更多记录。当我尝试使用store.unloadAll('record-type')
卸载所有这些记录时,记录最终都会从商店中完全卸载,但操作完成大约需要90秒。
让我感到困惑的是unloadAll
方法立即返回并且没有返回承诺但Web GUI将冻结,并且使用ember检查器我可以看到所有记录仍然存在,直到大约90秒后,他们终于消失了。
我正在通过以下操作调用unloadAll
方法:
actions: {
unloadStore() {
console.log('calling unloadAll');
this.get('store').unloadAll('record-type');
console.log('unloadAll returns immediately');
}
}
我正在创建如下模型:
for(let obj of data.response){
store.createRecord('record-type', {
'id': obj._id.$oid,
'prop1': obj.prop1,
'prop2': obj.prop2,
'prop3': obj.prop3
});
}
预计卸载此数量的记录应该花费80多秒还是我做错了什么?我通过Chrome的性能分析器注意到,在ember.debug.js文件的removeObject
方法中花费了大量时间。我认为它与arrayContentWillChange的重复点击以及在unloadAll
执行期间更改记录数组触发的其他此类事件有关。性能配置文件的屏幕截图与here相关联。
答案 0 :(得分:0)
我遇到了同样的问题,这对我有用:
users : {_id, name, lastname}