Невозможно получить свойства объекта при циклическом просмотре объектов в indexedDB - PullRequest
0 голосов
/ 29 мая 2019

Я не могу получить свойства при циклическом просмотре объектов, хранящихся в indexedDB.Когда я пытаюсь получить объекты через tasksStore.get(i);, я получаю ошибку Cannot read property 'property' of undefined at IDBRequest.getTasks.onsuccess, однако, если я изменяю ее на tasksStore.get(1);, она работает нормально и получает объект с id = 1 x длина индекса.

Я попытался проверить typeof обоих способов, и они оба возвращают номер.

//success handler on connection
    request.onsuccess = function(e) {
        db = request.result;

        //define store index
        tasksStore = tasksTx.objectStore("tasksStore");

        //error handler on result of the request
        db.onerror = function(e) {
            console.log("ERROR " + e.target.errorCode);
        }

        //variable for counting objects in the index
        let amountOfTasks = tasksIndex.count();

        //error handler
        amountOfTasks.onerror = function() {
            console.log("There was an error finding the amount of tasks")
        }

        //success handler
        amountOfTasks.onsuccess = function() {
            for (var i = 1; i < amountOfTasks.result; i++) {
                let getTasks = tasksStore.get(i);

                let getTasksElementContainer = document.getElementById("list-tasks");
                let createTasksList = document.createElement("li");
                createTasksList.id = "task-" + i;

                getTasks.onerror = function() {
                    console.log("There was an error looping through the tasks")
                }

                getTasks.onsuccess = function() {
                    console.log(getTasks.result.title); //getTasks.result works, getTasks.result.title does not.
                    getTasksElementContainer.appendChild(createTasksList);
                    //JSON stringify to return object in string format, and not [Object object]
                    createTasksList.innerHTML = JSON.stringify(getTasks.result.title);
                }
            }   
        }
    }

1 Ответ

0 голосов
/ 29 мая 2019

Когда вы вызываете IDBObjectStore.get с ключом, которого нет в вашей базе данных, результирующее значение не определено.Это, вероятно, объясняет, почему иногда getTasks.result не определено.

Если у вас по-прежнему возникают проблемы, вы, скорее всего, будете в порядке, если приведете самостоятельный воспроизводимый пример.Вы, вероятно, найдете свою собственную ошибку в процессе этого.Если нет, проще получить более конкретную помощь по переполнению стека, если у вас есть код, который другие люди могут запустить, чтобы непосредственно наблюдать за проблемой (например, создание базы данных и вставка данных).

...