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)
  })
})

 

 

 

 

carlospf

Ingeniero Técnico en Informática de Sistemas, especializado en desarrollo de soluciones software y comercio electrónico. Director técnico y cofundador de CoverManager, software de gestión de reservas en restaurantes de alta ocupación.

También te podría gustar...

Deja un comentario