IndexedDb 改变时触发事件?

Event fired when IndexedDb altered?

我们正在使用 DexieJS 作为 IndexedDb 的包装器,并且正在寻找一种方法来确定基础数据库架构是否发生变化。最坏的情况是,用户在使用我们的应用程序时删除了一个 table 或整个数据库(不太可能?当然,但拜托 - 用户 )。
或者,IndexedDb 是否会记录“上次修改”值之类的内容?如果我们只有这些,我们就可以完成这项工作。可订阅的事件会更好,但...... IndexedDb 或 Dexie 是否支持这样的东西?

架构更改必须在 IndexedDB 中进行版本升级,并且每当架构更改时都会触发一个事件“onversionchange”。 Dexie 在此描述事件:https://dexie.org/docs/Dexie/Dexie.on.versionchange.

如果您想收到 table.clear() 等正常非架构更改的通知,您应该尝试支持 cross-window/worker table观察。参见 release notes for 3.1.0-alpha.1 or this blog post。在您的情况下,您可能希望观察整个 table 上的任何变化。为此,请使用:

const observable = liveQuery(() => db.yourTable.toArray());

还有一个较低级别的事件,以防您希望在不重新查询数据的情况下收到通知:See this issue comment

请注意,dexie 只能观察源自使用 dexie 改变数据的代码的更改。它不会对直接进入 indexedDB API 的更改做出反应,因为 DOM API.

中没有这样的本机事件