当遍历存储在indexedDB中的对象时,我无法检索属性。当我尝试通过tasksStore.get(i);
获取对象时,出现错误Cannot read property 'property' of undefined at IDBRequest.getTasks.onsuccess
,但是,如果将其更改为tasksStore.get(1);
,它可以正常工作,并获取id = 1 x索引长度的对象
我尝试检查两种方式的类型,它们都返回数字。
//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);
}
}
}
}
答案 0 :(得分:0)
当您使用数据库中不存在的键调用IDBObjectStore.get
时,结果值是不确定的。这可能解释了为什么有时getTasks.result
是不确定的。
如果您仍然遇到问题,可以通过制作一个独立的可复制示例来很好地为您服务。在此过程中,您可能会发现自己的错误。如果不是这样,那么如果您有一些其他人可以运行以直接观察到该问题的代码(例如,包括数据库创建和插入数据),则可以更容易地获得有关Stack Overflow的更具体帮助。