IDBFactory:databases() 方法
注意:此功能在Web Workers中可用。
databases
是 IDBFactory
接口的一个方法,它返回一个 Promise
,该 Promise 会返回一个包含所有可用数据库的名称和版本的对象的数组。
这是一个数据库的快照,主要用于允许 Web 应用程序检查已创建哪些数据库——例如,清理应用程序代码的早期版本创建的数据库。
语法
js
databases()
参数
无。
返回值
异常
SecurityError
DOMException
-
如果从不透明来源调用此方法或用户已禁用存储,则会抛出此异常。
UnknownError
DOMException
-
如果由于任何原因无法确定可用数据库的集合,则会抛出此异常。
示例
创建和列出数据库
此示例创建/打开多个数据库。在每个数据库成功初始化后,它会列出所有可用的数据库。
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① |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 使用 IndexedDB
- 启动事务:
IDBDatabase
- 使用事务:
IDBTransaction
- 设置键范围:
IDBKeyRange
- 检索和更改数据:
IDBObjectStore
- 使用游标:
IDBCursor
- 参考示例:待办事项通知(查看示例)。