从ember商店卸载大量(100,000+)记录

时间:2017-08-15 19:16:25

标签: javascript ember.js ember-data

我通过将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相关联。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,这对我有用:

users : {_id, name, lastname}