我有一个Electron应用程序,它在IndexedDb的顶部使用Dexie.js。按照Typescript的说明here,我将Dexie子类化,并在构造函数中定义了Db:
super('myDb');
this.version(1).stores({
myTable: 'testGuid, tag, downloadDate'
});
一切正常。数据库和表在IndexedDb中创建,我可以插入记录。通过Chrome DevTools的“应用程序”标签查看IndexedDb,我可以看到表中的数据以及每个索引中列出的数据。
如果我现在只是简单地重新加载应用程序(Electron中的Ctrl-R),则至少有一个索引为空,并且在VSCode控制台中开始出现错误:
Uncaught (in promise) TypeError: Cannot read property 'keyPath' of undefined
Uncaught TypeError: Cannot read property 'databaseId' of undefined
但是当我在表格视图中单击一个索引时,它只是空白:
我还刚刚注意到,数据库列表似乎被安全性来源和版本留空了:
我刚刚进行了另一项测试,实际上我什至不必在表中插入任何记录来引起问题。简单地加载我的应用程序(该应用程序会创建数据库/表),然后重新加载Electron会使索引变得异常。
知道我在做什么错吗?
谢谢
TTE
更新#1
我什至不需要重新加载我的应用程序。如果我只是简单地加载应用程序,请进入“应用程序”选项卡并验证是否存在所有Db /表/索引,然后从“应用程序”选项卡中刷新Db,现在至少有一个索引已损坏/为空。
更新#2
我使用Dexie Typescript指令中的示例代码获得了相同的结果。