IndexedDB es una base de datos clave-valor en el navegador. Es una base de datos NoSQL. Es transaccional, es decir, si una acción particular cae dentro de una transacción, ninguna de las acciones de esa transacción se aplica. Esto asegura que la base de datos permanezca consistente.
¿Por qué usar IndexedDB?
- LocalStorage se diseñó para cantidades más pequeñas de datos y solo puede almacenar datos de strings para claves y valores, mientras que IndexedDB puede trabajar con una gran cantidad de datos no estructurados, incluidos archivos/blobs.
- Es similar a un objeto de JavaScript, también puede tener propiedades y objetos anidados.
- Se puede acceder de forma asíncrona, se puede utilizar con los trabajadores de servicios, lo que ayuda a almacenar los datos fuera de línea y, una vez que el dispositivo obtiene acceso a Internet, los sincroniza con los servidores.
Usando IndexedDB: JavaScript se usa para acceder a IndexedDB.
- Abrir una base de datos –
// Syntax let request = indexedDB.open(name, version); // name : database name, string value // version : version number, by default 1, positive integer
El código para abrir una base de datos debe verificar si la base de datos existe o no.
let request = indexedDB.open(
"gfg"
, 1);
request.onupgradeneeded =
function
() {
// Initialize new database
};
request.onerror =
function
() {
console.error(
"Unable to access database"
, request.error);
// Logs error to the console
};
request.onsuccess =
function
() {
let db = request.result;
// Use existing database
};
- Crear un almacén de objetos en la base de datos –
// Syntax let objectStore = db.createObjectStore(name, [keyOption]); // name : object store name // keyOption : object property key
let request = indexedDB.open(
"gfg"
, 1);
// Check if object store exists and
// then creates it
request.onupgradeneeded =
function
() {
let db = request.result;
if
(!db.objectStoreNames.contains(
'articles'
)) {
db.createObjectStore(
'articles'
, {keyPath:
'id'
});
}
};
- Iniciar una transacción –
// Syntax db.transaction(objectStore, type]); // objectStore : objectStore which is to be used // type : readonly or readwrite
let transaction = db.transaction(
"articles"
,
"readwrite"
);
// Access an object store
let articles = transaction.objectStore(
"articles"
);
// Create an object
let article = {
id:
'Array'
,
topic :
'Introduction to Array'
};
// Add an object
let request = articles.add(article);
// Success
request.onsuccess =
function
() {
console.log(
"Article Published"
, request.result);
};
// Failed
request.onerror =
function
() {
console.log(
"Article Publish failed"
, request.error);
};
- Cerrar la transacción
let transaction = db.transaction(
"books"
,
"readwrite"
);
// Conducting operations in the transaction
// When transaction is over
transaction.oncomplete =
function
() {
console.log(
"Transaction is complete"
);
};
Podemos abortar la transacción por la fuerza mediante el método transaction.abort().
El uso y la implementación de IndexedDB son simples. Así es como puede usar IndexedDB en su código a través de JavaScript.
Publicación traducida automáticamente
Artículo escrito por tarundhamor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA