-
-
Notifications
You must be signed in to change notification settings - Fork 641
WriteableTable.bulkAdd()
Since 1.3.0 (Bugfixed in 1.3.4 and 1.3.6)
table.bulkAdd(items, keys?)
items | Array of objects to add | |
keys (optional) | Array of primary keys that corresponds to given items array |
- If your primary key is inbound, you MUST NOT provide the
keys
argument. - If primary key is non-inbound but auto-incremented,
keys
argument is optional. - If primary key is non-inbound and non-auto-incremented,
keys
argument is compulsory.
var db = new Dexie("test");
db.version(1).stores({
tableWithInboundKeys: "id,x,y,z", // Don't provide "keys"
tableWithAutoIncNonInbound: "++,x,y,x", // Optionally provide "keys"
tableWithoutInboundKeys: ",x,y,z" // Always provide "keys"
});
Returns with the resulting primary key of the object that was last in given array.
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. NOTE: If you call bulkAdd() outside a transaction scope and an error occur on one of the operations, the successful operations will still be persisted to DB! If this is not desired, surround your call to bulkAdd() in a transaction and do not catch the bulkAdd() operation but just the transaction promise!
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.
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