正在开发一个Chrome扩展,它需要与IndexedDB集成。试图弄清楚如何使用Dexie.JS
。找到了一堆示例。这些示例看起来并不太复杂。有一个特定的示例特别有趣,可以在https://github.com/dfahlander/Dexie.js/blob/master/samples/open-existing-db/dump-databases.html上使用Dexie探索IndexedDB
但是,当我运行上面的一个“转储实用程序”时,它看不到IndexedDB数据库,并告诉我:There are databases at the current origin.
在开发者工具Application
选项卡的Storage下,我看到了我的IndexedDB
数据库。
这是某种权限问题吗?任何选项卡/用户都可以访问任何indexedDB数据库吗?
我该看什么?
谢谢你
2条答案
按热度按时间qlckcl4x1#
在chrome/opera中,有一个非标准的API webkitGetDatabaseNames(),Dexie.js使用它来检索当前源上的数据库名称列表。对于其他浏览器,Dexie通过为每个源保持一个最新的数据库名称数据库来模拟这个API,因此:
对于chrome浏览器,Dexie.getDatabaseNames()将列出当前源的所有数据库,但对于非chrome浏览器,将仅显示使用Dexie创建的数据库。
如果您需要转储每个数据库的内容,请查看this issue,它基本上给出了:
将这些函数与JSON.stringify()和JSON.parse()结合使用,以完全序列化数据。
l5tcr1uw2#
使用当前indexedDB API将数据转储到JSON文件的工作示例,如以下位置所述:
下面的代码片段将从gmail设置中启用了Offline Mode的gmail帐户中转储最近的消息。
从DevTools〉Sources〉Snippets运行上面的代码还可以让您设置断点并调试和检查对象。
确保将正确的数据库版本设置为
indexedDB.open(...)
的第二个参数。要查看浏览器使用的值,可以使用以下代码: