以这种方式批量插入时,我遇到了非常糟糕的性能和 Linq2indexedDB 崩溃:
for(var i=0;i<clients.length;i++) {
db.from(config.objectStoreName).insert(clients[i]).then(function(args){
deferred.resolve(clients.length);
}, function(args){
deferred.reject("Client item couldn't be added!");
});
}
当使用本机 indexedDB 执行非常相似的操作时,它工作正常:
var store = db.transaction(["client"], "readwrite").objectStore("client");
for(var i=0;i<clients.length;i++) {
var request = store.put(clients[i]);
}
request.onsuccess = function() {
deferred.resolve(clients.length);
}
request.onerror = function(e) {
deferred.reject("Client item couldn't be added!");
}
当“客户”的数组不超过几千个时,没关系,但是到了 50000 时,它就会挂起,然后选项卡就会崩溃。在本机实现上,只需几秒钟即可插入 50000(在 Chrome 上)。
我是否遗漏了什么,即是否有另一种方法可以使用 Linq2indexedDB 批量插入记录,或者 Linq2indexedDB 根本无法使用批量插入/更新?