IndexedDB DOM例外:无法对“IDBObjectStore”执行“getAll”:交易在Angular 中不活动

nvbavucw  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(1)|浏览(165)
private get ctxMessage() {
    const messageTransaction = this.db.transaction('messages', 'readwrite');
    const messageStore = messageTransaction.objectStore('messages');
    return { messageTransaction, messageStore };
}

private async getAllMessage(message: Message) {
    const { messageStore ,messageTransaction } = this.ctxMessage;
    const result =  await messageStore.getAll();
    return result
}

当我尝试调用getAllMessage方法时,显示的事务未处于活动状态。
我正在使用idb npm软件包

c86crjj0

c86crjj01#

getAll的调用必须在与db.transaction(...)相同的事件循环迭代中发生,因为在当前事件循环迭代结束时未检测到挂起的请求时,事务完成。出现此错误的原因是,您尝试在已完成并因此不再处于活动状态的事务上启动IDBRequest。若要修复此错误,请执行以下操作:修改代码以确保在创建事务后立即调用getAll。一种简单的方法是在每次需要调用getAll时创建一个新事务。

相关问题