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