使用IndexedDB API,我们有以下两种方法:getAll()
和getAllKeys()
,下面是一个用法示例:
let transaction = this.db.transaction(["table"]);
let object_store = transaction.objectStore("table");
request = object_store.getAll(); /* or getAllKeys() */
request.onerror = (event) => {
console.err("error fetching data");
};
request.onsuccess = (event) => {
console.log(request.result);
};
问题是getAll()
似乎只检索数组格式的数据,getAllKeys()
获取没有数据的所有密钥。我找不到获取键和值的方法。
是否有更好的方法可以通过一次调用获取数据和,就像存储一样?
如果没有,有没有更好的方法可以做到这一点而不会让代码太混乱而发生多个异步调用?
答案 0 :(得分:8)
我能够使用IDBCursor使用一个回调函数检索所有带有键的值,如下所示:
transaction = this.db.transaction(["table"]);
object_store = transaction.objectStore("table");
request = object_store.openCursor();
request.onerror = function(event) {
console.err("error fetching data");
};
request.onsuccess = function(event) {
let cursor = event.target.result;
if (cursor) {
let key = cursor.primaryKey;
let value = cursor.value;
console.log(key, value);
cursor.continue();
}
else {
// no more results
}
};