- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在开发一个需要与 IndexedDB 集成的 Chrome 扩展。试图找出如何使用 Dexie.JS
。找到了一堆 sample 。那些看起来不太复杂。在 https://github.com/dfahlander/Dexie.js/blob/master/samples/open-existing-db/dump-databases.html 中有一个特别有趣的特定示例,用于使用 Dexie 探索 IndexedDB。
但是,当我运行上面的那个 - “转储实用程序”时,它没有看到 IndexedDB 数据库,告诉我:当前来源有数据库。
在开发人员工具的 Application
选项卡中,在 Storage 下,我看到了我的 IndexedDB
数据库。
这是某种权限问题吗?任何选项卡/用户都可以访问任何 indexedDB 数据库吗?
我应该看什么?
谢谢
最佳答案
在 chrome/opera 中,有一个非标准 API webkitGetDatabaseNames(),Dexie.js 使用它来检索当前来源的数据库名称列表。对于其他浏览器,Dexie 通过为每个来源保持最新的数据库名称来模拟此 API,因此:
对于 Chrome 浏览器,Dexie.getDatabaseNames()将列出当前来源的所有数据库,但对于非 Chromium 浏览器,只会显示使用 Dexie 创建的数据库。
如果你需要转储每个数据库的内容,看看this issue , 这基本上给出了:
interface TableDump {
table: string
rows: any[]
}
function export(db: Dexie): TableDump[] {
return db.transaction('r', db.tables, ()=>{
return Promise.all(
db.tables.map(table => table.toArray()
.then(rows => ({table: table.name, rows: rows})));
});
}
function import(data: TableDump[], db: Dexie) {
return db.transaction('rw', db.tables, () => {
return Promise.all(data.map (t =>
db.table(t.table).clear()
.then(()=>db.table(t.table).bulkAdd(t.rows)));
});
}
将这些函数与 JSON.stringify() 和 JSON.parse() 相结合以完全序列化数据。
const db = new Dexie('mydb');
db.version(1).stores({friends: '++id,name,age'});
(async ()=>{
// Export
const allData = await export (db);
const serialized = JSON.stringify(allData);
// Import
const jsonToImport = '[{"table": "friends", "rows": [{id:1,name:"foo",age:33}]}]';
const dataToImport = JSON.parse(jsonToImport);
await import(dataToImport, db);
})();
关于javascript - 转储 indexedDB 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46025699/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!