Я работаю с IndexedDB, пытаясь сохранить массив.Массив кэшируется, и я вижу это в инструментах разработки, но по какой-то причине я получаю следующую ошибку:
Вот код, который вызывает ошибку:
private async getExistingColumnsFromIndexDb() {
let doesCacheExist: boolean;
try {
doesCacheExist = await this.indexedDbService.getKeyIsValid(SELECTED_COLUMNS_KEY, IndexedDBTableEnum.EMPTY_PLANNING_TASKS);
if (doesCacheExist) {
let cachedData: ISelectedColumns[];
try {
cachedData = await (this.indexedDbService.getCacheIfValid(SELECTED_COLUMNS_KEY, IndexedDBTableEnum.EMPTY_PLANNING_TASKS) as Promise<ISelectedColumns[]>);
return cachedData;
} catch (error) {
// eventually log this to database - just conosole error for now and return empty array
console.error('error getting column cache', `error: ${error}`);
return [];
}
} else {
return [];
}
} catch (error) {
// eventually log this to database - just conosole error for now and return empty array
console.error('error validating if cache exists', `error: ${error}`);
return [];
}
}
public async updateColumns(columns: any[]) {
let existingColumns: ISelectedColumns[];
try {
existingColumns = await this.getExistingColumnsFromIndexDb();
} catch (error) {
// eventually log this to database - just conosole error for now
console.error('failed retrieving existing columns tasks', `error: ${error}`);
}
return this.indexedDbService.putOnTable(
[...columns.map(column => ({ columns: column} as ISelectedColumns)), ...existingColumns],
CacheDurationEnum.NEVER,
SELECTED_COLUMNS_KEY,
IndexedDBTableEnum.EMPTY_PLANNING_TASKS
);
}
public async getSelectedColumns() {
return this.getExistingColumnsFromIndexDb();
}
Ошибка не отображается, если я не включил SELECTED_COLUMNS_KEY
в метод updateColumns.Но я не получаю данные обратно, так как использую ключ в методе выше.