【问题标题】:DOMException: Failed to execute 'getAll' on 'IDBObjectStore': The transaction is not active in angularDOMException:无法在 \'IDBObjectStore\' 上执行 \'getAll\':事务在 Angular 中不活跃
【发布时间】:2022-08-18 23:08:03
【问题描述】:
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
}

当我尝试调用时显示交易未激活获取所有消息方法。

我正在使用 idb npm 包

    标签: javascript angular typescript indexeddb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-26
      • 2016-01-08
      • 2020-08-01
      • 2019-01-11
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多