【问题标题】:How to read current db version number in dexie?如何在 dexie 中读取当前的数据库版本号?
【发布时间】:2017-10-19 17:10:41
【问题描述】:
在Dexie 中,当您需要升级架构或表架构时,您使用db.version(X) 方法。
然后该库将检查用户的浏览器是否缓存了以前的版本并执行适当的升级步骤。
但是我找不到如何手动读取当前用户的db版本。
例如,如果故意编写这个破坏代码:
db.version(1).stores(/* my schema */) //删除此代码
db.version(2).stores(/* my schema */)
库会礼貌地抛出一个错误,指出用户当前拥有的版本(很明显,1)没有架构。
但是有没有办法准确地读取用户的版本?
它可能对调试有用!
【问题讨论】:
标签:
javascript
caching
indexeddb
dexie
【解决方案1】:
在 Dexie 版本 3+ 中。您可以使用:
-
Dexie.verno:获取dexie版本。 dexie 版本是注册版本中的最高值。
-
Dexie.idbdb.version:获取IndexedDB 的本机版本。这是Dexie.verno 乘以10。有关更多技术说明,请参阅here。
const db = new Dexie("AppDB");
db.version(1);
db.version(2);
db.version(5);
db.open();
db.on("ready", () => {
console.log(db.verno); // 5
console.log(db.idbdb.version); // 50
});
【解决方案2】:
如果您只想检查数据库,可以跳过整个version()。例如,我可以使用此代码打印数据库的版本号。
new Dexie("myDB").open().then((db) => console.log(db.verno))
请注意(如文档中所述),Dexie 将通过 .version() 设置的版本号乘以 10,因此如果您在浏览器的调试器中检查数据库,您将看到一个数字,该数字是您使用时获得的数字的 10 倍verno field。