Base de datos local JSON ligera LowDB
/typicode/lowdb
npm install lowdb
O:
Cantidad baja de adición de hilo
const baja = require(' lowdb ');
const file sync = require(' lowdb/adapters/file sync '); //Hay muchos adaptadores para elegir.
const adaptor = new file sync(' db . JSON '); //Declarar un adaptador
const db = low(adapter);
db . defaults({publicaciones: [], usuarios: {}, recuento: 0})
. escribir();
db get('publicar')
. Push ({id: 1, título: 'lowdb es increíble' })
. write()
db.set('usuario.nombre', 'typicode')
. write()
db.update('count ', n = gtn 1)
. write()
Al ejecutar este programa se agregará un archivo db.json al proyecto, que almacena los datos agregados:
{
"Publicar":[
{
[id]: 1,
"Título": "lowdb impresionante"
}
],
"Usuario":{
"Nombre":"TypeCode"
},
[ Conteo]: 1
}
Lowdb está construido sobre lodash, por lo que puedes usar cualquier característica potente de lodash, como _. obtener() y _. find(), se puede utilizar en serie:
db.get('usuario')
. Buscar({género:'masculino'})
. value()
Función función
Low(adapter) devuelve una cadena lodash con propiedades y funciones específicas.
Db. [...].escribir()/. value() escribe/lee datos.
Db.getState()/. setState() obtiene/establece el estado de la base de datos.
Una instancia de la base de datos. _ base de datos lodash, puede usar esto para agregar sus propias funciones o mixins de terceros, como lodash-id.
db. _.mixin({
Segundo: función (matriz){
Devolver matriz[1]
}
})< / p>
db get('publicación')
. segundos()
. Value()
El adaptador incluido en lowdb tiene los siguientes parámetros opcionales: FileSync, filesync y LocalBrowser:
DefaultValue: el valor predeterminado cuando el archivo no existe;
Serialización/deserialización: operaciones antes de escribir y después de leer.
adaptador constante = new fil sync(' db . JSON ', {
serializar: (datos) = >encrypt(JSON.stringify(datos)),
Deserialización: (data) = gt; JSON.parse(decrypt(data))
})
Puede utilizar directamente la función lodash para realizar consultas. Cabe señalar que algunas operaciones pueden provocar que se modifiquen los datos originales. Para evitar este mal funcionamiento, es necesario utilizar. clonarDeep(). Todas las operaciones son diferidas y no se ejecutarán oficialmente hasta que se llamen. valor()o. Escribir().
Comprueba si el usuario existe.
La base de datos tiene ('usuario')
. value()
Establecer usuarios
db.set('usuarios ', [])
. write()
Categoría y selección
db.get('Usuario')
. filtro({género:'masculino'})
. sortBy('edad')
. Disparar(5)
. value()
Obtener un campo específico
db.get('usuario')
. mapa("nombre")
. value()
Obtener cantidad
db.get('usuario')
. tamaño()
. value()
Obtener información específica
db.get('usuarios[0]). Nombre')
. value()
Actualizar información
db.get('usuario')
. Buscar({nombre: 'Tom'})
. asignar({nombre: 'Tim'})
. write()
Eliminar información
db.get('usuario')
. Eliminar({nombre: 'Hora'})
. write()
Eliminar atributo
db.unset('users.name)
. write()
Copia profunda
db.get('usuario')
. ClonDepth()
. value()
Puede usar shortid y lodash-id para crear un índice de identificación único para cada registro en la base de datos y luego recuperar el registro de operación por identificación:
const shortid = require( 'shortid ')
const postId = db
. get("publicación")
. push({ id: shortid.generate(), título: '¡Bajo!'})
. escribir()
. Identificación
const post=db
. get("publicación")
. Busque ({ id: postId })
. value()
const lo dashid = require(' lo dash-id ')
const file sync = require(' lowdb/adapters/file sync ')
adaptador const = nueva sincronización de archivos(' db . JSON ')
const db = low(adapter)
db.
_.Proteínas mixtas
//Si la colección aún no existe, necesitamos establecer algunos valores predeterminados
//También podemos almacenar nuestras colecciones
Colección constante =base de datos
. Predeterminado({posts:[]})
. get("publicación")
//Insertar nueva publicación...
const newPost = colección
. insert({ título: '¡Bajo!'})
. write()
// ...y recuperarlo usando su id
const post = collection
. getById(newPost.id)
. La función value()
low() acepta adaptadores personalizados.
Categoría MyStorage {
Constructor(){
// ...
}
leer ( ) {
//Debe devolver datos (objeto o matriz) o prometer
}
Escribir (datos){
/ / No debe devolver nada o promesas
}
}
const adaptor = new MyStorage(args)
const db = low(adapter) ;
======================================= ==== ====
La introducción del sitio web oficial en inglés es más concisa.
Lowdb 3 es un paquete ESM puro. Si tienes problemas para importarlo a tu proyecto, lee aquí.
Puedes usar TypeScript para verificar tus datos.
También se pueden agregar Lodash u otras bibliotecas de utilidades para mejorar lowdb.
Ver ejemplos/directorio para el uso de CLI, servidor y navegador.
Lowdb tiene dos clases (para adaptadores asíncronos y síncronos).
Llame a adaptor.read() y configure db.data.
Nota: Los adaptadores JSONFile y JSONFileSync establecerán db.data en nulo si el archivo no existe.
Llame al adaptador.write(db.data).
Guarda el contenido de tu base de datos. Puede ser cualquier tipo admitido por JSON.stringify si se utiliza el adaptador proporcionado con lowdb.
Por ejemplo:
Adaptador para lectura y escritura de archivos JSON.
Adaptador de memoria. Ayuda a acelerar las pruebas unitarias.
Adaptador de sincronización window.localStorage.
Adaptador para lectura y escritura de texto. Muy útil para crear adaptadores personalizados.
Si ya ha publicado un adaptador para lowdb, no dude en crear un PR para agregarlo aquí.
Es posible que desees crear un adaptador para escribir db.data en YAML, XML, datos cifrados, almacenamiento remoto,...
El adaptador es una clase simple que solo necesita Estar expuesto Dos enfoques:
Por ejemplo, digamos que tiene almacenamiento asíncrono y desea crear un adaptador para él:
Consulte src/adapters/
para obtener más ejemplos.Para crear un adaptador para otro formato además de JSON, puede utilizar TextFile o TextFileSync.
Por ejemplo:
Lowdb no admite el módulo de clúster de nodos.
Si tiene objetos JavaScript grandes (~10-100 MB), puede experimentar algunos problemas de rendimiento.
Esto se debe a que cada vez que se llama a db.write, todo el db.data se serializa usando JSON.stringify y se escribe en el almacenamiento.
Dependiendo de su caso de uso, esto puede ser bueno o no. Esto se puede mitigar realizando operaciones por lotes y llamando a db.write solo cuando sea necesario.
Si planea escalar, se recomienda encarecidamente utilizar una base de datos como PostgreSQL o MongoDB.