У меня есть 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();
        }
    }
}
0
Jun Dolor

2 ответа

Я сделал несколько изменений в предложении 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!`);
    }
}

Я бы попробовал метод очистки В ObjectStore .

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

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