Deletes all objects in the query.



Return Value

Promise where result is the Number of deleted records.

Error Handling

If any object fails to be deleted or an exception occurs in a callback function, the entire operation will fail and the transaction will be aborted.

If you catch the returned Promise, the transaction will not abort, and you recieve a Dexie.MultiModifyError error object containing the following properties:

failuresArray of Error objects for all errors that have occurred
failedKeysArray with the keys of the failed deletions. This array will have the same order as failures so that failures[i] will always represent the failure of failedKeys[i]
successCountNumber of successful deletions made.

If you do NOT catch the returned Promise, and an error occurs, the transaction will be aborted.

If you want to log the error but still abort the transaction, you must encapsulate the operation in a transaction() block and catch the transaction instead. It is also possible to catch the operation and call transaction.abort() in the catch() clause.


    .where("state").anyOf("finished", "discarded")
    .then(function (deleteCount) {
        console.log( "Deleted " + deleteCount + " objects");

With yield (Supported since 2015 by Chrome, Firefox, Opera and Edge):

db.transaction('rw', db.orders, function* () {
    var deleteCount = yield db.orders
        .where("state").anyOf("finished", "discarded")

    console.log ("Successfully deleted " + deleteCount + " items");
}).catch (e => {
    console.error (e);

With Typescript:

async function myDeleteFunction () {
    let deleteCount = await db.orders
        .where("state").anyOf("finished", "discarded")


Collection.delete() is equivalent to:

Collection.modify(function () {delete this.value;});

..but Collection.delete() is much faster than deleting using Collection.modify().

Table of Contents