我有一个Vue PWA,它在第一次加载或升级时就停止创建我的IndexDB对象存储。这是我的代码,我正在使用最新版本的IDB(https://github.com/jakearchibald/idb):
await openDB('dbname', 1, {
upgrade(db, oldVersion, newVersion, transaction) {
switch (newVersion) {
case 0:
// a placeholder case so that the switch block will
// execute when the database is first created
// (oldVersion is 0)
// falls through
case 1:
db.createObjectStore('change_log', {keyPath: 'id'});
db.createObjectStore('person', {keyPath: 'id'})
.createIndex('username', 'username');
break;
}
}
});
我尝试了多种浏览器和隐身标签等,并且总是会发生相同的情况。数据库已创建,但未创建对象存储。我使用开发人员工具清除PWA中的所有数据并刷新,但发生了相同的事情。
如果增加版本号,我的数据库的版本将在浏览器中更新,但仍不添加对象存储。
upgrade()函数不会被调用。
我在开发的较早时候就发生了这种情况,我已解决了这个问题,但我不记得是怎么回事。我觉得这实际上可能不是编码问题...
好,我发现了问题。我在我的应用程序中添加了日志记录机制,在升级代码打开数据库创建日志条目之前,有一些代码正在运行。因此,它是在调用我的升级方法之前创建数据库(没有对象存储)。我更改了开放数据库代码,以始终包含解决问题的升级方法。