Я использую обещание indexedDB Джейка Арчибальда wrapper .
У меня есть хранилище объектов, которое содержит объекты json и отдельный ключ с автоматическим приращением.Когда я получаю объекты, мне также нужно получить ключ, чтобы потом я мог их удалить.
Я использую iterateCursor для рекурсивного пошагового перемещения курсора, чтобы я мог напрямую добавить ключ и значение в массив, который я возвращаю в качестве разрешенного обещания.
static getThings(){
return thingsDb.then(db => {
let keyVals = [];
const tx = db.transaction('things');
const unsyncedStore = tx.objectStore('things');
return unsyncedStore.iterateCursor(cursor => {
if(!cursor) return Promise.resolve(keyVals);
console.log(`key: ${cursor.primaryKey}, val: ${cursor.value}`);
keyVals.push({key: cursor.primaryKey, value: cursor.value});
cursor.continue();
});
}).catch(error => {
console.error(error);
});
}
однако, когда яcall
DBHelper.getThings().then(returnedArray=> {
// do something with returnedArray
})
выдает ошибку, говоря, что возвращаемый массив не определен.