@composi/idb:

IDB

IndexedDB con Promesas

IDB es una envoltura de promesa para IndexedDB. Eso significa que todas sus operaciones no bloquean. Proporciona una API simple y similar a localStorage. Esto le permite conservar los datos localmente con la facilidad de uso de localStorage pero con la solidez de IndexedDB.

LocalStorage es ideal para guardar pequeñas cantidades de datos rápidamente. Sin embargo, solo almacena un tipo: cadena. Todo lo que quieras guardar en él debe convertirse en una cadena. Eso incluye todos los tipos de datos de JavaScript. Esto requiere convertir los datos a cadenas con JSON.stringify. Para recuperar los datos hay que pasar los datos a JSON.parse. Esta conversión de ida y vuelta no suele ser un problema. Pero a veces sí lo es. Cuanto más complejos sean los datos, más se enfrentarán a las limitaciones de localStorage. Básicamente, localStorage es una cookie glorificada, un caché para datos de cadena. Y, por último, el almacenamiento local está limitado a aproximadamente 5 MB de datos. En contraste, IndexedDB comienza con 50 MB de almacenamiento disponible y puede usar más con la aprobación del usuario. Si evita guardar los blobs, puedes almacenar bastante en 50 MB.

IndexedDB es una base de datos no-SQL y por lo tanto no tiene ninguna de las limitaciones de SQL. Pero eso significa que su API es comlejo. Configurar una base de datos con ella y mantenerla se complicado. Cuando todo lo que deseas es conservar algunos datos, aprender a usar IndexedDB de manera eficiente puede ser excesivo. @composi/idb fue creado para abordar este problema. Proporciona una solución para persistir fácilmente los datos en IndexedDB sin tener que saber cómo funciona IndexedDB.

Con IndexedDB, necesitas saber cómo crear una base de datos, crear un store, abrir una conexión, manejar el control de versiones, manejar esquemas de actualización y manejar transacciones. En contraste, con @composi/idb tienes la siguiente API:

Una Base de Datos para Regirlos Todos

Debido a que @composi/idb se trata de conservar los datos y mantener las cosas en forma fácil, se limita a una base de datos: composi-idb con un store (almacén): composi-store. Para usarlo, simplemente lo importas a tu proyecto y usas uno de los métodos anteriores. Al hacer eso, IDB crea automáticamente una base de datos predeterminada para ti.

import { h, render } from '@composi/core'
import { idb } from '@composi/idb'

// Crear la base por defecto de datos y guarda unos datos en ella:
idb.set('mis-cosas', ['manzanas', 'calcetines', 'jabón'])

Como mencionamos, @composi/idb toma ventaja de las promesas. Eso significa que todos los métodos anteriores devuelven promesas. Para acceder a sus resultados, tendrás que utilizar una función then. Vaya a Uso para aprender a usar los métodos de @ composi/idb.

Otras Opciones

Si quieres más control sobre lo que hace IndexedDB, debes de considerar otras librerías que simplican la interfaz de IndexedDB: dexie, pouchdb-browser, o chequee lo que se encuentra en NPM