Node.js uso de Base de datos – Parte 4
Existen muchas maneras de almacenar los datos en una aplicación Node.js, la primera de ellas es almacenarla en una variable global, es interesante porque es rápido al almacenar en memoria RAM, pero por otro lado, no tenemos memoria RAM infinita y si la aplicación se reinicia, perdemos todos los datos.
const users = [] app.post('/users', function (req, res) { const user = req.body users.push({ name: user.name, age: user.age }) res.send('guardado satisfactoriamente') })
Guardar datos en archivos.
Podemos guardar los datos en archivos de la siguiente manera:
const fs = require('fs') app.post('/users', function (req, res) { const user = req.body fs.appendFile('users.txt', JSON.stringify({ name: user.name, age: user.age }), (err) => { res.send('guardado satisfactoriamente') }) })
De esta manera no perderemos los datos en caso de que se reinicie la aplicación, pero se empieza a complicar con procesos lectura, escritura y actualizaciones (generando procesos bloqueantes).
SQL
SQL es un lenguaje específicamente diseñado para trabajar con bases de datos relacionales, se almacenana en tablas, habrá que definir esquemas.
No SQL
Por otro lado, las bases de datos NoSQL se han vuelto muy populares en la última década. Con NoSQL no es necesario definir un esquema y puede almacenar cualquier JSON arbitrario.
Esto es útil con JavaScript porque podemos convertir cualquier objeto en un JSON de manera sencilla. Tenga cuidado, porque no se puede garantizar que los datos son consistentes, y nunca que hay en la base de datos.
Node.js y MongoDB
Hay una leyenda urbana que dice que Node.js sólo puede usarse con MongoDB (la base de datos NoSQL que más usa la gente)
De acuerdo con mi experiencia esto es falso, existen drivers para conectar casi que cualquier base de datos .
Node.js y PostgreSQL
Para dar algo de lucidez a soluciones profesionales usando Node.js usaremos PosgreSQL
CREATE TABLE users( name VARCHAR(20), age SMALLINT );
'use strict' const pg = require('pg') const conString = 'postgres://username:password@localhost/database' pg.connect(conString, function (err, client, done) { if (err) { return console.error('error fetching client from pool', err) } client.query('SELECT $1::varchar AS my_first_query', ['hello'], function (err, result) { done() if (err) { return console.error('error happened during query', err) } console.log(result.rows[0]) process.exit(0) }) })
1 respuesta
[…] Node.js uso de Base de datos – Parte 4 […]