#angular #typescript #indexeddb
#angular #машинописный текст #индексированная база данных
Вопрос:
Я работаю с 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. Но я не получаю данные обратно, поскольку я использую ключ в описанном выше методе.
Комментарии:
1. Чтобы получить ответ на этот вопрос, вам необходимо предоставить больше информации о том, что такое indexedDbService, потому что эта ошибка возникает в этом модуле или в том, как вы используете этот модуль.