Spec-Zone.ru › Web APIs

IDBObjectStore

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

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

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

Примечание: Эта функция доступна в Потоках выполнения JavaScript.

Интерфейс IDBObjectStore API IndexedDB представляет хранилище объектов в базе данных. Записи внутри хранилища объектов упорядочены по их ключам. Такое упорядочение позволяет быстро вставлять, искать и извлекать данные в определённом порядке.

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

IDBObjectStore.indexNames Только для чтения

Список имён индексов объектов в этом хранилище объектов.

IDBObjectStore.keyPath Только для чтения

Путь ключа этого хранилища объектов. Если этот атрибут null, приложение должно предоставить ключ для каждой операции модификации.

IDBObjectStore.name

Имя этого хранилища объектов.

IDBObjectStore.transaction Только для чтения

Объект IDBTransaction, которому принадлежит это хранилище объектов.

IDBObjectStore.autoIncrement Только для чтения

Значение флага автоматического инкремента для этого хранилища объектов.

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

IDBObjectStore.add()

Возвращает объект IDBRequest и, в отдельном потоке, создаёт структурированную копию value, и сохраняет скопированное значение в хранилище объектов. Используется для добавления новых записей в хранилище объектов.

IDBObjectStore.clear()

Создаёт и немедленно возвращает объект IDBRequest, и очищает это хранилище объектов в отдельном потоке. Используется для удаления всех текущих записей из хранилища объектов.

IDBObjectStore.count()

Возвращает объект IDBRequest и, в отдельном потоке, возвращает общее количество записей, соответствующих заданному ключу или IDBKeyRange. Если аргументы не указаны, возвращается общее количество записей в хранилище.

IDBObjectStore.createIndex()

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

IDBObjectStore.delete()

Возвращает объект IDBRequest и, в отдельном потоке, удаляет объект хранилища, выбранный указанным ключом. Используется для удаления отдельных записей из хранилища объектов.

IDBObjectStore.deleteIndex()

Удаляет указанный индекс в подключённой базе данных, используется при обновлении версии.

IDBObjectStore.get()

Возвращает объект IDBRequest и, в отдельном потоке, возвращает объект хранилища, выбранный указанным ключом. Используется для извлечения конкретных записей из хранилища объектов.

IDBObjectStore.getKey()

Возвращает объект IDBRequest и, в отдельном потоке, извлекает и возвращает ключ записи для объекта в хранилище, соответствующего указанному параметру.

IDBObjectStore.getAll()

Возвращает объект IDBRequest и извлекает все объекты в хранилище, соответствующие указанному параметру, или все объекты в хранилище, если параметры не указаны.

IDBObjectStore.getAllKeys()

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

IDBObjectStore.index()

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

IDBObjectStore.openCursor()

Возвращает объект IDBRequest и, в отдельном потоке, возвращает новый объект IDBCursorWithValue. Используется для итерации по хранилищу объектов по первичному ключу с помощью курсора.

IDBObjectStore.openKeyCursor()

Возвращает объект IDBRequest и, в отдельном потоке, возвращает новый IDBCursor. Используется для итерации по хранилищу объектов с ключом.

IDBObjectStore.put()

Возвращает объект IDBRequest и, в отдельном потоке, создаёт структурированную копию value, и сохраняет скопированное значение в хранилище объектов. Используется для обновления существующих записей в хранилище объектов, когда режим транзакции readwrite.

Пример

Этот пример демонстрирует различные способы использования хранилищ объектов, от обновления структуры данных с помощью IDBObjectStore.createIndex внутри функции onupgradeneeded, до добавления нового элемента в хранилище объектов с помощью IDBObjectStore.add. Для полного рабочего примера см. наше приложение To-do Notifications (посмотреть пример в браузере).

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

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // store the result of opening the database in db.
  db = DBOpenRequest.result;
};

// 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

  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.";
};

// Create a new item to add in to the object store
const newItem = [
  {
    taskTitle: "Walk dog",
    hours: 19,
    minutes: 30,
    day: 24,
    month: "December",
    year: 2013,
    notified: "no",
  },
];

// open a read/write db transaction, ready for adding the data
const transaction = db.transaction(["toDoList"], "readwrite");

// report on the success of the transaction completing, when everything is done
transaction.oncomplete = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Transaction completed.";
};

transaction.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Transaction not opened due to error. Duplicate items not allowed.";
};

// create an object store on the transaction
const objectStore = transaction.objectStore("toDoList");
// make a request to add our newItem object to the object store
const objectStoreRequest = objectStore.add(newItem[0]);

objectStoreRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Request successful.";
};

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

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

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

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
IDBObjectStore 2423–57 12 1610–16 15 8 2525–57 22 14 8 1.51.5–7.0 4.4≤37–57
add 23 12 10 15 8 25 22 14 8 1.5 4.4
autoIncrement 23 79 10 15 8 25 22 14 8 1.5 4.4
clear 23 12 10 15 8 25 22 14 8 1.5 4.4
count 23 12 10 15 8 25 22 14 8 1.5 4.4
createIndex 23 12 10 15 8 25 22 14 8 1.5 4.4
delete 23 12 10 15 8 25 22 14 8 1.5 4.4
deleteIndex 23 12 10 15 8 25 22 14 8 1.5 4.4
get 23 12 10 15 8 25 22 14 8 1.5 4.4
getAll 48 79 44 35 10.1 48 48 35 10.3 5.0 48
getAllKeys 48 79 44 35 10.1 48 48 35 10.3 5.0 48
getKey 48 79 51 45 10.1 48 58 43 10.3 5.0 48
index 23 12 10 15 8 25 22 14 8 1.5 4.4
indexNames 23 12 10 15 8 25 22 14 8 1.5 4.4
keyPath 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
openCursor 23 12 10 15 8 25 22 14 8 1.5 4.4
openKeyCursor 23 79 44 15 10.1 25 44 14 10.3 1.5 4.4
put 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
worker_support 23 12 37 15 10 25 37 14 10 1.5 4.4

См. также

  • Использование IndexedDB
  • Начало транзакций: IDBDatabase
  • Использование транзакций: IDBTransaction
  • Установка диапазона ключей: IDBKeyRange
  • Использование курсоров: IDBCursor
  • Пример: To-do Notifications (Посмотреть пример).

© 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/IDBObjectStore

Spec-Zone.ru

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