首页 > 解决方案 > 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 方法中包含该错误,则不会显示该错误。但是,我没有取回数据,因为我在上面的方法中使用了密钥。

标签: angulartypescriptindexeddb

解决方案


推荐阅读