Dexie.SubTransactionError
Inheritance Hierarchy
- Error
- Dexie.DexieError
- Dexie.SubTransactionError
- Dexie.DexieError
Description
A call to db.transaction() with a mode or set of tables that was not compatible with the currently ongoing transaction. For example:
db.transaction('r', db.friends, ()=> {
return db.transaction('rw', db.friends, db.pets, ()=> {
}).catch(e => {
// e will be SubTransactionError for two reasons:
// 1. Parent transaction is readonly.
// 2. Parent transaction does not include db.pets.
})
});
To work around this error, make sure that the parent transaction includes all tables that subtransactions may include and that if subtransactions require 'rw' mode, use 'rw' mode also in parent transactions.
If you didn't have a parent transaction, but your transaction was initiated in your Collection.each() or Collection.modify() callback, you should surround the call to Collection.each() / Collection.modify() with a transaction block, including the correct mode and tables to include.
Sample using Promise.catch()
doSomeDatabaseWork().then(result => {
// Success
}).catch('SubTransactionError', e => {
// Failed with SubTransactionError
console.error ("SubTransaction error: " + e.message);
}).catch(Error, e => {
// Any other error derived from standard Error
console.error ("Error: " + e.message);
}).catch(e => {
// Other error such as a string was thrown
console.error (e);
});
Sample: switch(error.name)
db.on('error', function (error) {
switch (error.name) {
// errnames.SubTransaction ==="SubTransactionError"
case Dexie.errnames.SubTransaction:
console.error ("SubTransaction error");
break;
default:
console.error ("error: " + e);
}
});
Properties
| name | Will always be Dexie.errnames.SubTransaction === "SubTransactionError" |
| message | Detailed message |
| inner? | Inner exception instance (if any) |
| stack | Can be present if the error was thrown. If signaled, there wont be any call stack. |