IDBFactory: databases() 方法
注意:此功能在 Web Workers 中可用。
IDBFactory 介面的 databases 方法返回一個 Promise,該 Promise 會解析為一個物件陣列,每個物件包含所有可用資料庫的名稱和版本。
這是資料庫的一個快照,主要用於允許 Web 應用程式檢查已建立的資料庫——例如,為了清理應用程式程式碼早期版本建立的資料庫。
語法
js
databases()
引數
無。
返回值
一個 Promise,它會解析為一個物件陣列,代表可用資料庫的快照(或者因以下錯誤/異常而拒絕)。
每個陣列物件具有以下屬性:
請注意,返回物件中的序列是未定義的。
異常
SecurityErrorDOMException-
如果該方法是從 不透明源 呼叫,或者使用者停用了儲存,則會丟擲此異常。
UnknownErrorDOMException-
如果由於任何原因無法確定可用資料庫的集合,則會丟擲此異常。
示例
建立和列出資料庫
此示例建立/開啟多個數據庫。在每個資料庫成功初始化後,它會列出所有可用的資料庫。
JavaScript
首先,我們定義用於獲取和記錄可用資料庫的函式。它會等待 indexedDB.databases() 返回的 Promise,然後迭代陣列並記錄每個元素的 [值]。
js
async function getDb() {
const databases = await indexedDB.databases();
log("List databases:");
databases.forEach((element) => {
log(`name: ${element.name}, version: ${element.version}`);
});
}
為了演示上述函式如何使用,我們在下面建立兩個資料庫。對於每個資料庫,我們在資料庫開啟之前進行記錄。我們還在成功初始化(或錯誤)時進行記錄,然後也記錄可用的資料庫。
js
// Create a database named toDoList with default version (1)
const dbName1 = "toDoList";
log(`Opening: ${dbName1}`);
let DBOpenRequest = window.indexedDB.open(dbName1);
DBOpenRequest.addEventListener("error", (event) => {
log(`Error opening: ${dbName1}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Initialized: ${dbName1}`);
getDb();
});
// Create database "AnotherDb"
const dbName2 = "AnotherDb";
log(`Opening ${dbName2}`);
DBOpenRequest = window.indexedDB.open(dbName2, 2);
DBOpenRequest.addEventListener("error", (event) => {
log(`Error opening: ${dbName2}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Initialized: ${dbName2}`);
getDb();
});
結果
結果如下所示。請注意,獲取資料庫所需的時間及其順序是未定義的。
規範
| 規範 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbfactory-databases① |
瀏覽器相容性
載入中…
另見
- 使用 IndexedDB
- 開始事務:
IDBDatabase - 使用事務:
IDBTransaction - 設定鍵的範圍:
IDBKeyRange - 檢索和修改資料:
IDBObjectStore - 使用遊標:
IDBCursor - 參考示例:待辦事項通知(檢視即時示例)。