重新加载时丢失Dexie.js索引

时间:2018-08-06 13:11:42

标签: typescript electron dexie

我有一个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 

数据仍在表中-我可以在“应用程序”选项卡的表视图中看到它: Data in table

但是当我在表格视图中单击一个索引时,它只是空白:

No data in index?

我还刚刚注意到,数据库列表似乎被安全性来源版本留空了:

Database Info

我刚刚进行了另一项测试,实际上我什至不必在表中插入任何记录来引起问题。简单地加载我的应用程序(该应用程序会创建数据库/表),然后重新加载Electron会使索引变得异常。

知道我在做什么错吗?

  • Dexie 2.0.4
  • 电子2.0.3
  • 角度6.0.1
  • 打字稿2.7.2
  • 节点8.9.4

谢谢

TTE

更新#1

我什至不需要重新加载我的应用程序。如果我只是简单地加载应用程序,请进入“应用程序”选项卡并验证是否存在所有Db /表/索引,然后从“应用程序”选项卡中刷新Db,现在至少有一个索引已损坏/为空。

更新#2

我使用Dexie Typescript指令中的示例代码获得了相同的结果。

0 个答案:

没有答案