Upload em massa otimizado (em bloco) de objetos no IndexedDB
Quero adicionar objetos a alguma tabela no IndexedDB em uma transação:
_that.bulkSet = function(data, key) {
var transaction = _db.transaction([_tblName], "readwrite"),
store = transaction.objectStore(_tblName),
ii = 0;
_bulkKWVals.push(data);
_bulkKWKeys.push(key);
if (_bulkKWVals.length == 3000) {
insertNext();
}
function insertNext() {
if (ii < _bulkKWVals.length) {
store.add(_bulkKWVals[ii], _bulkKWKeys[ii]).onsuccess = insertNext;
++ii;
} else {
console.log(_bulkKWVals.length);
}
}
};
Parece que funciona bem, mas não é uma maneira muito otimizada de fazer isso, especialmente se o número de objetos for muito alto (~ 50.000-500.000). Como eu poderia otimizar isso? Idealmente, quero adicionar primeiro 3000, depois removê-lo da matriz e adicionar outros 3000, nomeadamente em pedaços. Alguma ideia?