-
-
Notifications
You must be signed in to change notification settings - Fork 641
Dexie.on.error
David Fahlander edited this page Mar 20, 2015
·
16 revisions
This global error handler will only be if a failing promise leads to a cancelled database transaction. To catch errors occurring outside of transactions, use Promise.on.error instead!
db.on("error", function (error) {});
error: Any | Any uncatched error from a request or transaction will bubble up to the subscriber. |
This event will fire whenever you perform a database operation that fails, or if you are within a transaction scope and an exception is thrown.
db.on('error') will only fire in the following scenarios:
- You are in a transaction scope and an exception occur and you dont catch the Promise returned from the db.transaction() method.
- You are doing a database operation that fails with an exception and you don't catch the resulting promise.
But not if:
- You are outside of a transaction and the error doesnt occur from within a database operation.
db.on("error", function(e) { console.error (e.stack || e); });
db.friends.put(window.open); // Functions cannot be put into database.
// promise not catched, so the error will bubble to db.on('error').
db.on("error", function(e) { console.error (e.stack || e); });
var transactionPromise = db.transaction('rw', db.people, function() {
db.People.put({name: "Arne"}); // People misspelled
});
// transactionPromise not explicitely catched --> db.on('error') will fire.
db.open().then(function() {
// People misspelled, but we are not in a transaction nor a db operation.
db.People.put({name: "Arne"});
});
db.transaction('rw', db.people, function() {
db.People.put({name: "Arne"}); // People misspelled
}).catch(function (err) {
// We explicitely catch the error, so it wont bubble to db.on('error')
});
Dexie.js - minimalistic and bullet proof indexedDB library