Почему курсор IndexedDB все еще находится на той же клавише, несмотря на выполнение cursor.continue ()? - PullRequest
0 голосов
/ 30 октября 2019

У меня проблема с моим кодом. Поэтому я пытаюсь получить разные значения, выполняя функцию indexedDB .continue (), но каким-то образом курсор не обновляется и остается на той же клавише. Я заблудился из-за слов о том, как это исправить, кто-нибудь может мне помочь?

Я пробовал код, в котором функция .continue () находится вне функции while, которую я построил, и она работает безвопрос, находясь внутри функции while, она не обновляет сами значения.

var date2 = new Date();
var id;
var request = window.indexedDB.open("distrostore");
request.onsuccess = function(event) {
db = event.target.result;
objStore = db.transaction(["orderhistory"], "readonly").objectStore('orderhistory');
var datecount = objStore.count();
objStore.index('date_purchased').openCursor().onsuccess = function(event) {
var date = new Date(date2.getFullYear(), 0, 1);
var data = [];
var months = [];
count = 0;
month = 0;
var datecount2 = 0;
mlist = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
    const cursor = event.target.result;
    if (cursor) {
    while (month < 12){
if (datecount2 < datecount.result && cursor.value.date_purchased.includes(date.getFullYear() + '-' + ("0" + (date.getMonth() + 1)).slice(-2))){
count++;
datecount2++;
if (datecount2 !== datecount.result){
cursor.continue();
}
    } else if (count > 0){
data.push(count);
count = 0;
months.push(mlist[date.getMonth()]);
date.setMonth(date.getMonth()+1);
month++;
    } else if (date.getMonth() <= date2.getMonth()){
data.push(count);
months.push(mlist[date.getMonth()]);
date.setMonth(date.getMonth()+1);
month++;
    } else {
months.push(mlist[date.getMonth()]);
date.setMonth(date.getMonth()+1);
month++;
    }
    }
    }
var ctx = $("#chart1 .chart");
var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: months,
        datasets: [{
            label: 'Orders',
            data: data,
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
            ],
            fill: false,
            borderColor: [
                'rgba(70,76,255,1)',
            ],
            borderWidth: 2
        }]
    },
    options: {
        maintainAspectRatio: false,
        legend: {
        display: false
        },
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
});
}
db.close();
}

Должна возвращать цену в соответствии с тем, что есть в моей IndexedDB, но возвращает неправильную цену. Выход должен быть 196.10.

...