Spec-Zone.ru › Web APIs

IDBDatabase

Базовая поддержка Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2021 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Веб-воркерах.

Интерфейс IDBDatabase API IndexedDB предоставляет соединение с базой данных; вы можете использовать объект IDBDatabase для открытия транзакции в своей базе данных, а затем создавать, изменять и удалять объекты (данные) в этой базе. Интерфейс предоставляет единственный способ получения и управления версиями базы данных.

Примечание: Все ваши действия в IndexedDB всегда происходят в контексте транзакции, представляющей взаимодействие с данными в базе данных. Все объекты в IndexedDB — включая хранилища объектов, индексы и курсоры — привязаны к конкретной транзакции. Таким образом, вы не можете выполнять команды, получать доступ к данным или открывать что-либо за пределами транзакции.

EventTarget IDBDatabase

Свойства экземпляра

IDBDatabase.name Только для чтения

Строка, содержащая имя подключенной базы данных.

IDBDatabase.version Только для чтения

64-битное целое число, содержащее версию подключенной базы данных. При первом создании базы данных это свойство — пустая строка.

IDBDatabase.objectStoreNames Только для чтения

DOMStringList, содержащий список имен хранилищ объектов, которые в настоящее время находятся в подключенной базе данных.

Методы экземпляра

Наследуется от: EventTarget

IDBDatabase.close()

Возвращает значение сразу же и закрывает соединение с базой данных в отдельном потоке.

IDBDatabase.createObjectStore()

Создает и возвращает новое хранилище объектов или индекс.

IDBDatabase.deleteObjectStore()

Удаляет хранилище объектов с заданным именем в подключенной базе данных, а также все индексы, которые ссылаются на него.

IDBDatabase.transaction()

Немедленно возвращает объект транзакции (IDBTransaction), содержащий метод IDBTransaction.objectStore, который вы можете использовать для доступа к своему хранилищу объектов. Выполняется в отдельном потоке.

События

Подключайтесь к этим событиям, используя addEventListener() или назначив обработчик событий свойству oneventname этого интерфейса.

close

Событие, срабатывающее при неожиданном закрытии соединения с базой данных.

versionchange

Событие, срабатывающее при запросе изменения структуры базы данных.

Следующие события доступны IDBDatabase посредством распространения событий от IDBTransaction:

IDBTransaction abort

Событие, срабатывающее при прерывании транзакции.

IDBTransaction error

Событие, срабатывающее, когда запрос возвращает ошибку, и событие распространяется до объекта соединения.

Пример

В следующем фрагменте кода мы асинхронно открываем базу данных (IDBFactory), обрабатываем успешные и ошибочные случаи, и создаем новое хранилище объектов в случае необходимости обновления (IDBDatabase). Для получения полного примера, см. наше приложение Уведомления о задачах (просмотреть пример в браузере).

// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these two event handlers act on the IDBDatabase object,
// when the database is opened successfully, or not
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

DBOpenRequest.onsuccess = (event) => {
  node.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
  db = DBOpenRequest.result;

  // Run the displayData() function to populate the task
  // list with all the to-do list data already in the IDB
  displayData();
};

// This event handles the event whereby a new version of
// the database needs to be created Either one has not
// been created before, or a new version number has been
// submitted via the window.indexedDB.open line above

DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Error loading database.";
  };

  // Create an objectStore for this database using
  // IDBDatabase.createObjectStore

  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain

  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });

  objectStore.createIndex("notified", "notified", { unique: false });

  note.appendChild(document.createElement("li")).textContent =
    "Object store created.";
};

Эта следующая строка открывает транзакцию в базе данных, затем открывает хранилище объектов, в котором мы можем затем изменять данные.

const objectStore = db
  .transaction("toDoList", "readwrite")
  .objectStore("toDoList");

Спецификации

Спецификация
Indexed Database API 3.0
# database-interface

Совместимость с браузерами

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
IDBDatabase 2423–57 12 1610–16 15 8 2525–57 22 14 8 1.51.5–7.0 4.4≤37–57
close 23 12 10 15 8 25 22 14 8 1.5 4.4
close_event 30 79 50 17 10.1 30 50 18 10.3 2.0 ≤37
createObjectStore 23 12 10 15 8 25 22 14 8 1.5 4.4
deleteObjectStore 23 12 10 15 8 25 22 14 8 1.5 4.4
name 23 12 10 15 8 25 22 14 8 1.5 4.4
objectStoreNames 23 12 10 15 8 25 22 14 8 1.5 4.4
transaction 23 12 10 15 8 25 22 14 8 1.5 4.4
version 23 12 10 15 8 25 22 14 8 1.5 4.4
versionchange_event 23 12 10 15 8 25 22 14 8 1.5 4.4
worker_support 23 12 37 15 10 25 37 14 10 1.5 4.4

См. также

  • Использование IndexedDB
  • Использование транзакций: 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/IDBDatabase

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API