如何删除IndexedDB中的所有记录

问题描述 投票:1回答:2

我有一个IndexedDB,用于存储所有购物车订单。结帐时,购物车需要清空。我试图遍历每个订单并删除,但是不知何故,只有第一个订单被删除了。这是我的代码:

const clear_cart = () => {
    let objectCart = db.transaction('cart').objectStore('cart');

    objectCart.openCursor().onsuccess = function(e){
        let cursor = e.target.result;
        if(cursor){
           let cartId = cursor.value.id;

           let transaction = db.transaction(['cart'], 'readwrite');
           let objectToDelete = transaction.objectStore('cart');
           let request = objectCart.objectToDelete(cartId);

           transaction.oncomplete = () => {
                console.log(`cart ${cartId} is deleted!`);
           }

           cursor.continue();
        }
    }
}
javascript indexeddb
2个回答
1
投票

我对dmigo的建议做了一些调整,这解决了我的问题。这是代码

const clear_cart = () => {
    let objectCart = db.transaction('cart').objectStore('cart');

    let transaction = db.transaction(['cart'], 'readwrite');
    let objectToDelete = transaction.objectStore('cart');

    objectToDelete.clear().onsuccess = function(e){
        console.log(`the cart is clear!`);
    }
}

0
投票

我会尝试clear methodobjectStore

const clear_cart = () => {
    let objectCart = db.transaction(['cart'], 'readwrite').objectStore('cart');

    objectCart.clear().onsuccess = function(e){
        console.log(`the cart is clear!`);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.