IDBFactory: метод databases()
Примечание: Эта функция доступна в Веб-воркерах.
Метод databases интерфейса IDBFactory возвращает обещание, которое выполняется с массивом объектов, содержащих имя и версию всех доступных баз данных.
Это моментальный снимок баз данных, предназначенный в первую очередь для того, чтобы веб-приложения могли проверить, какие базы данных были созданы — например, чтобы очистить базы данных, созданные более ранними версиями кода приложения.
Синтаксис
databases()
Параметры
Нет.
Возвращаемое значение
Обещание Promise, которое выполняется с массивом объектов, представляющих моментальный снимок доступных баз данных (или отклоняется с ошибкой/исключениями, описанными ниже).
Каждый объект в массиве имеет следующие свойства:
Обратите внимание, что порядок возвращаемых объектов не определен.
Исключения
-
SecurityErrorОшибка безопасности -
Выбрасывается, если метод вызван из непрозрачного источника или пользователь отключил хранение.
-
UnknownErrorОшибка неизвестного типа -
Выбрасывается, если набор доступных баз данных не может быть определен по какой-либо причине.
Примеры
Создание и перечисление баз данных
В этом примере создается/открывается несколько баз данных. При успешном инициализации каждой базы данных перечисляются все доступные базы данных.
JavaScript
Сначала мы определяем функцию, которая используется для получения и вывода доступных баз данных. Она ожидает выполнение обещания, возвращаемого методом indexedDB.databases(), а затем итерирует массив и выводит значения каждого элемента:
async function getDb() {
const databases = await indexedDB.databases();
log("List databases:");
databases.forEach((element) => {
log(`name: ${element.name}, version: ${element.version}`);
});
}
Чтобы продемонстрировать использование вышеприведенной функции, ниже мы создаем две базы данных. Перед открытием каждой базы данных мы выводим сообщение. Мы также выводим сообщение об успешной инициализации (или об ошибке), а затем выводим доступные базы данных.
// 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();
});
Результат
Результат показан ниже. Обратите внимание, что время, затраченное на получение баз данных, и их порядок не определены.
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
databases |
72 | 79 | 126 | 60 | 14 | 72 | 126 | 51 | 14 | 11.0 | 72 |
См. также
- Использование IndexedDB
- Начало транзакций:
IDBDatabase - Использование транзакций:
IDBTransaction - Установка диапазона ключей:
IDBKeyRange - Получение и изменение данных:
IDBObjectStore - Использование курсоров:
IDBCursor - Пример справки: Уведомления о задачах (Просмотреть пример в браузере).
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory/databases