Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 倾销指数数据_Javascript_Google Chrome Extension_Indexeddb_Dexie - Fatal编程技术网

Javascript 倾销指数数据

Javascript 倾销指数数据,javascript,google-chrome-extension,indexeddb,dexie,Javascript,Google Chrome Extension,Indexeddb,Dexie,正在开发一个需要与IndexedDB集成的Chrome扩展。正在尝试了解如何使用Dexie.JS。找到了一堆样本。这些看起来不太复杂。有一个特别有趣的例子是在 但是,当我运行上面的“dump实用程序”时,它没有看到IndexedDB数据库,告诉我:当前源位置有数据库。 从开发人员工具应用程序选项卡的存储下,我可以看到我的索引数据库 这是某种权限问题吗?任何选项卡/用户都可以访问任何indexedDB数据库吗 我应该看什么 谢谢您在chrome/opera中,有一个非标准API webkitGet

正在开发一个需要与IndexedDB集成的Chrome扩展。正在尝试了解如何使用
Dexie.JS
。找到了一堆样本。这些看起来不太复杂。有一个特别有趣的例子是在

但是,当我运行上面的“dump实用程序”时,它没有看到IndexedDB数据库,告诉我:
当前源位置有数据库。

从开发人员工具
应用程序
选项卡的存储下,我可以看到我的
索引数据库

这是某种权限问题吗?任何选项卡/用户都可以访问任何indexedDB数据库吗

我应该看什么


谢谢您

在chrome/opera中,有一个非标准API webkitGetDatabaseNames(),Dexie.js使用它来检索当前源上的数据库名称列表。对于其他浏览器,Dexie通过保持每个源的数据库名称的最新数据库来模拟此API,因此:

对于chromium浏览器,将列出当前来源的所有数据库,但对于非chromium浏览器,将仅显示使用Dexie创建的数据库

如果需要转储每个数据库的内容,请查看,它基本上提供:

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);
})();

扩展的自有页面有自己的来源。内容脚本使用网页源。对于仍然对此感兴趣的任何人,请注意Chrome也不再有此API。Chrome现在有一个不同的API:。