在鍍鉻/歌劇,有一個非標準的API webkitGetDatabaseNames()的Dexie.js用於檢索當前的源數據庫的名稱列表。對於其他瀏覽器,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);
})();
擴展自己的頁面有其自己的起源。內容腳本使用網頁來源。 – wOxxOm