IDBFactory: метод open()
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Web Workers.
Метод open() интерфейса IDBFactory запрашивает открытие соединения с базой данных.
Метод возвращает объект IDBOpenDBRequest сразу же и выполняет операцию открытия асинхронно. Если операция выполнена успешно, на объекте запроса, возвращаемом этим методом, генерируется событие success, и его свойство result устанавливается в новый объект IDBDatabase для соединения.
Может вызывать события upgradeneeded, blocked или versionchange.
Синтаксис
open(name) open(name, version)
Параметры
name-
Имя базы данных.
versionНеобязательно-
Необязательно. Версия базы данных для открытия. Если версия не указана и база данных существует, соединение с базой данных будет открыто без изменения ее версии. Если версия не указана и база данных не существует, она будет создана с версией
1.
Возвращаемое значение
Объект IDBOpenDBRequest, на котором будут сгенерированы последующие события, связанные с этим запросом.
Если операция выполнена успешно, свойство result запроса имеет значение объекта IDBDatabase, представляющего соединение с базой данных.
Исключения
TypeError-
Выбрасывается, если значение
versionне является числом, большим нуля.
Примеры
Пример вызова open с параметром version текущей спецификации:
const request = window.indexedDB.open("toDoList", 4);
В следующем фрагменте кода мы запрашиваем открытие базы данных и обрабатываем случаи успеха и ошибки. Для полного рабочего примера см. наше приложение To-do Notifications (Посмотреть пример).
const note = document.querySelector("ul");
// Let us open version 4 of our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// these two event handlers act on the database being opened
// successfully, or not
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Error loading database.";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"Database initialized.";
// store the result of opening the database in the db
// variable. This is used a lot later on, for opening
// transactions and suchlike.
db = DBOpenRequest.result;
};
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
open |
23 | 12 | 10 | 15 | 1514–15В некоторых выпусках Safari 14 первый вызовindexedDB.open() зависает навсегда, см. ошибку 226547. |
25 | 22 | 14 | 1514–15В некоторых выпусках Safari на iOS 14 первый вызовindexedDB.open() зависает навсегда, см. ошибку 226547. |
1.5 | 4.4 |
См. также
- Использование 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/open