progressive-web-apps - PWA 创建 IndexedDB 数据库,但不创建任何对象存储
问题描述
我有一个 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() 函数不会被调用。
我在开发的早期就遇到过这种情况,我修复了它,但我不记得是怎么回事。我觉得这实际上可能不是编码问题...
解决方案
好的,我发现了问题。我向我的应用程序添加了一个日志记录机制,并且在我的升级代码之前运行了一些代码,该代码正在打开数据库以创建一个日志条目。因此,在调用我的升级方法之前,它正在创建数据库(没有对象存储)。我更改了我的开放数据库代码以始终包含升级方法来解决我的问题。
推荐阅读
- excel - 单元格是否为空白的公式,它将前一个单元格视为该单元格的值并将单元格相加
- pandas - 使用带有两个字符作为分隔符的 pandas 从文本中加载数据
- intellij-idea - Intellij 快捷方式直接转到任何变量类或方法
- php - SQL QUESTION - Difference between using special characters with '' or with "" in a query in PHP
- excel - Excel 快速分析菜单。移除
- css - 无法在水平滚动中滚动到左边缘的末尾 - css
- matlab - 更改颜色图形栏
- css - 如何在 Vue 中使用 css 中的数据?
- r - R:根据重复的行检查多个data.frame并重新组织数据
- c++ - OpenGL - 为什么会出现此错误?不支持 COMPILATION_FAILED 版本“330”