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