Как удалить все записи в IndexedDB - PullRequest
0 голосов
/ 27 октября 2019

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

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Я сделал несколько изменений в предложении 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 голосов
/ 27 октября 2019

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

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

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