この方法で一括挿入すると、パフォーマンスが非常に悪く、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!");
}
「クライアント」の配列が数 1000 を超えない場合は問題ありませんが、50000 までにハングし、タブがクラッシュします。ネイティブ実装では、50000 をアップサートするのに数秒しかかかりません (Chrome 上)。
つまり、Linq2indexedDB でレコードをバッチ挿入する別の方法がありますか、または Linq2indexedDB は単にバッチ挿入/更新で動作しませんか?