-
-
Notifications
You must be signed in to change notification settings - Fork 641
WriteableTable.bulkAdd()
David Fahlander edited this page Mar 15, 2016
·
22 revisions
Since 1.3.0
table.bulkAdd(items)
items | Array of objects to add |
Returns with the resulting primary key of the last operation.
If some operations fail, bulkAdd will ignore those failures but return a rejected Promise with a Dexie.BulkError referencing failures. If caller does not catch that error, transaction will abort. If caller wants to ignore the failes, the bulkAdd() operations must be catched explicitely.
Add all given objects to the store.
If you have a large number of objects to add to the object store, bulkAdd() is a little faster than doing add() in a loop. The object store needs to have inbound keys, or have auto-incemented keys in order for bulkAdd to work - i.e. you're table schema must not start with an empty string.
var db = new Dexie("test");
db.version(1).stores({
tableWithInboundKeys: "id,x,y,z", // ok
tableWithAutoIncNonInbound: "++,x,y,x", // ok
tableWithoutInboundKeys: ",x,y,z" // not ok
});
var db = new Dexie("test");
db.version(1).stores({
raindrops: 'id,position'
});
var drops = [];
for (var i=0;i<100000;++i) {
drops.push({id: i, position: [Math.random(),Math.random(),Math.random()]}),
}
db.raindrops.bulkAdd(drops).then(function(lastKey) {
console.log("Done adding 100,000 raindrops all over the place");
console.log("Last raindrop's id was: " + lastKey); // Will be 100000.
}).catch(Dexie.BulkError, function (e) {
// Explicitely catching the bulkAdd() operation makes those successful
// additions commit despite that there were errors.
console.error ("Some raindrops did not succeed. However, " +
100000-e.failures.length + " raindrops was added successfully");
});
Dexie.js - minimalistic and bullet proof indexedDB library