ありがとう、非標準APIのwebkitGetDatabaseNamesが(あり)。他のブラウザの場合、DexieはこのAPIをエミュレートします。
クロムブラウザの場合、Dexie.getDatabaseNames()はクロムブラウザ以外のすべてのデータベースを現在の起点に表示します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);
})();
自分のページに自分の起源を持っています。コンテンツスクリプトはWebページの原点を使用します。 – wOxxOm