angular - IndexedDB NotFoundError
问题描述
我正在使用 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 方法中包含该错误,则不会显示该错误。但是,我没有取回数据,因为我在上面的方法中使用了密钥。
解决方案
推荐阅读
- java - 从 HttpUrlConnection 的输入流读取缓慢
- python - TypeError: 不支持的操作数类型 -: 'str' 和 'float' 比较两个数据帧
- c++ - 将数据从未对齐的结构数组移动到c ++中的对齐数组
- django - 先前删除模型时的Django迁移
- highcharts - highcharts 无法选择某些类
- xamarin.forms - Xamarin 表单如何获取现有的本地数据库
- javascript - Angular HTML绑定不起作用
- c - char 数组 __attribute__ 对齐
- c# - 使用 c# 读取 .PAK 文件
- react-select - 在 React-Select 上创建自定义组件