IDBObjectStore
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
La interfaz IDBObjectStore
de la API de IndexedDB representa un almacén de objetos en una base de datos. Los registros dentro de un almacén de objetos se ordenan según sus claves. Esta clasificación permite una rápida inserción, búsqueda y recuperación ordenada.
Nota: Esta característica está disponible en Web Workers.
Propiedades de instancia
IDBObjectStore.indexNames
Read only-
Una lista de los nombres de índices en objetos en este almacén de objetos.
IDBObjectStore.keyPath
Read only-
La ruta clave de este almacén de objetos. Si este atributo es
null
, la aplicación debe proporcionar una clave para cada operación de modificación. IDBObjectStore.name
-
El nombre de este almacén de objetos.
IDBObjectStore.transaction
Read only-
El objeto
IDBTransaction
al que pertenece este almacén de objetos. IDBObjectStore.autoIncrement
Read only-
El valor del indicador de incremento automático para este almacén de objetos.
Métodos de instancia
IDBObjectStore.add()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, crea un clon estructurado devalue
, y almacena el valor clonado en el almacén de objetos. Esto es para agregar nuevos registros a un almacén de objetos. IDBObjectStore.clear()
-
Crea y devuelve inmediatamente un objeto
IDBRequest
y borra este almacén de objetos en un subproceso separado. Esto es para eliminar todos los registros actuales de un almacén de objetos. IDBObjectStore.count()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, devuelve el número total de registros que coinciden con la clave proporcionada oIDBKeyRange
. Si no se proporcionan argumentos, devuelve el número total de registros en el almacén. IDBObjectStore.createIndex()
-
Crea un nuevo índice durante una actualización de versión y devuelve un nuevo objeto
IDBIndex
en la base de datos conectada. IDBObjectStore.delete()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, elimina el almacen de objetos seleccionado por la clave especificada. Esto es para eliminar registros individuales de un almacén de objetos. IDBObjectStore.deleteIndex()
-
Destruye el índice especificado en la base de datos conectada, utilizado durante una actualización de versión.
IDBObjectStore.get()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, devuelve el almacén de objetos seleccionado por la clave especificada. Esto es para recuperar registros específicos de un almacén de objetos. IDBObjectStore.getKey()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, recupera y devuelve la clave de registro del objeto en el almacen de objetos que coincide con el parámetro especificado. IDBObjectStore.getAll()
-
Devuelve un objeto
IDBRequest
recupera todos los objetos en el almacén de objetos que coincidan con el parámetro especificado o todos los objetos en el almacén si no se proporcionan parámetros. IDBObjectStore.getAllKeys()
-
Devuelve un objeto
IDBRequest
recupera claves de registro para todos los objetos en el almacén de objetos que coincidan con el parámetro especificado o todos los objetos en el almacén si no se proporcionan parámetros. IDBObjectStore.index()
-
Abre un índice de este almacén de objetos después del cual puede, por ejemplo, usarse para devolver una secuencia de registros ordenados por ese índice usando un cursor.
IDBObjectStore.openCursor()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, devuelve un nuevo objetoIDBCursorWithValue
. Se utiliza para iterar a través de un almacén de objetos por clave principal con un cursor. IDBObjectStore.openKeyCursor()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, devuelve un nuevoIDBCursor
. Se utiliza para iterar a través de un almacén de objetos con una clave. IDBObjectStore.put()
-
Devuelve un objeto
IDBRequest
y, en un subproceso separado, crea un clon estructurado devalue
, y almacena el valor clonado en el almacén de objetos. Esto es para actualizar los registros existentes en un almacén de objetos cuando el modo de transacción esreadwrite
.
Ejemplo
Este ejemplo muestra una variedad de usos diferentes de los almacenes de objetos, desde actualizar la estructura de datos con IDBObjectStore.createIndex
dentro de una función onupgradeneeded
, hasta agregar un nuevo elemento a nuestro almacén de objetos con IDBObjectStore.add
. Para ver un ejemplo funcional completo, consulte nuestra aplicación Notificaciones de tareas (ver ejemplo en vivo).
// Abramos nuestra base de datos
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
DBOpenRequest.onsuccess = (event) => {
note.innerHTML += "<li>Database initialized.</li>";
// Almacenar el resultado de abrir la base de datos en db.
db = DBOpenRequest.result;
};
// Este evento maneja el evento por el cual se necesita crear
// una nueva versión de la base de datos. O no se ha creado antes,
// o se ha enviado un nuevo número de versión a través de la línea
// window.indexedDB.open anterior.
DBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
db.onerror = (event) => {
note.innerHTML += "<li>Error loading database.</li>";
};
// Crear un objectStore para esta base de datos
const objectStore = db.createObjectStore("toDoList", {
keyPath: "taskTitle",
});
// definir qué elementos de datos contendrá el objectStore
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.innerHTML += "<li>Object store created.</li>";
};
// Crear un nuevo elemento para agregar al almacen de objetos
const newItem = [
{
taskTitle: "Walk dog",
hours: 19,
minutes: 30,
day: 24,
month: "December",
year: 2013,
notified: "no",
},
];
// abra una transacción de base de datos de lectura/escritura,
// lista para agregar los datos
const transaction = db.transaction(["toDoList"], "readwrite");
// informe sobre el éxito de la transacción completa, cuando todo esté hecho
transaction.oncomplete = (event) => {
note.innerHTML += "<li>Transaction completed.</li>";
};
transaction.onerror = (event) => {
note.innerHTML +=
"<li>Transaction not opened due to error. Duplicate items not allowed.</li>";
};
// crear un almacén de objetos en la transacción
const objectStore = transaction.objectStore("toDoList");
// haga una solicitud para agregar nuestro objeto newItem al almacén de objetos
const objectStoreRequest = objectStore.add(newItem[0]);
objectStoreRequest.onsuccess = (event) => {
note.innerHTML += "<li>Request successful .</li>";
};
Especificaciones
Specification |
---|
Indexed Database API 3.0 # object-store-interface |
Compatibilidad con navegadores
BCD tables only load in the browser
Véase también
- Uso de IndexedDB
- Iniciando transacciones:
IDBDatabase
- Uso de transacciones:
IDBTransaction
- Configuración de un rango de claves:
IDBKeyRange
- Recuperar y realizar cambios en sus datos:
IDBObjectStore
- Uso de cursores:
IDBCursor
- Ejemplo de referencia: Notificaciones de tareas (Ver el ejemplo en vivo).