TYPICO DE: LOWDB

<script src=”my own” title=”typico de: lowdb”>

En este post, había iniciado el camino que nos toca andar por el ecosistema Node.js. Si aún no lo has instalado en tu máquina, ¿qué estás esperando? ¡el futuro está aquí! Y hay cientos de tutoriales (incluido el oficial) que indican como hacerlo 😉 La idea acá es otra: usar la librería, con lo que nos toca o para lo que nos toca…

lowdb, una base de datos JSON estática

lowdb es una librería Javascript que permite simular el comportamiento de una base de datos No SQL orientada a documentos (JSON es perfecto para esto), usando para su acceso, un entorno Node.js. Para ello, la librería provee dos formas de hacerlo, usando un archivo JSON y usando la memoria RAM disponible. Usamos el instalador de paquetes de Node.js para instalar la librería:

$ npm install lowdb

Se llama lowdb porque para manipular la “base de datos” utiliza todos los métodos disponibles en la librería lodash, de la cual hablé brevemente en este post. La idea es simular consultas y resultados, así que prepararemos el terreno 😀 .

Preparando el terreno…

Primero buscamos una fuente de información JSON. Yo usé un extracto CSV de las visitas de mi blog (¡un millón de gracias a ustedes :mrgreen: !) transformadas al formato requerido usando esta página. El documento final quedaría así:

{
  "summary": [
    {
      "pais": "Venezuela",
      "visitas": 17
    },
    {
      "pais": "Ecuador",
      "visitas": 9
    },
    {
      "pais": "Costa Rica",
      "visitas": 12
    },
    {
      "pais": "España",
      "visitas": 32
    },
    {
      "pais": "El Salvador",
      "visitas": 7
    },
    {
      "pais": "Argentina",
      "visitas": 20
    },
    {
      "pais": "Estados Unidos",
      "visitas": 6
    },
    {
      "pais": "Colombia",
      "visitas": 45
    },
    {
      "pais": "Nicaragua",
      "visitas": 2
    },
    {
      "pais": "Chile",
      "visitas": 7
    },
    {
      "pais": "Honduras",
      "visitas": 2
    },
    {
      "pais": "México",
      "visitas": 35
    },
    {
      "pais": "Francia",
      "visitas": 1
    },
    {
      "pais": "Perú",
      "visitas": 43
    },
    {
      "pais": "Bolivia",
      "visitas": 9
    },
    {
      "pais": "República Dominicana",
      "visitas": 1
    }
  ]
}

Luego, escribimos un pequeño script en el mismo directorio donde ejecutamos el comando de instalación de la librería y empezamos a jugar:

//instancia de lowdb
var lowdb = require('lowdb'),
//Base de datos a partir de disco
    db = lowdb('summary.json'),
//nombre de la base de datos.
    data = db('summary');

console.log('*** 5 Países con mayor cantidad de visitas ***')
console.log(data.chain().sortByOrder('visitas', false).take(5).value());
console.log(); //nueva línea

console.log('*** País con menor cantidad de visitas ***')
console.log(data.chain().sortBy('visitas').first().value());
console.log();

console.log('*** Promedio de visitas ***')
console.log(data.reduce(function(suma, item){
	suma += item.visitas;
	return suma;
}, 0)/data.value().length);

Sólo para resaltar, la línea 2 es la sintaxis de como Node.js llama a sus dependencias usando el formato AMD de RequireJS, del cual hablé en este post. Mientras que en la línea 6, aunque se instancia la variable de acceso de ese modo, no tiene nada que ver con el nombre del archivo, sino con el hecho de que el primer campo del documento JSON se llama summary.

Resultados

He aquí el resultado de ejecutar el comando node app.js en el mismo directorio:

*** 5 Países con mayor cantidad de visitas ***
[ { pais: 'Colombia', visitas: 45 },
  { pais: 'Perú', visitas: 43 },
  { pais: 'México', visitas: 35 },
  { pais: 'España', visitas: 32 },
  { pais: 'Argentina', visitas: 20 } ]

*** País con menor cantidad de visitas ***
{ pais: 'Francia', visitas: 1 }

*** Promedio de visitas ***
15.5

Con la documentación de la librería lodash a la mano, se vuelve bastante interesante proponer combinaciones, trabajar con documentos JSON más complejos (con datos vinculados, por ejemplo), usar documentos no uniformes o iterar sobre propiedades no anidadas *risa malvada* 😈 .

La creatividad es un rasgo typico de las mentes curiosas 😉

</script>

Anuncios

Un comentario en “TYPICO DE: LOWDB

Los comentarios están cerrados.