Pasar al contenido principal
Alexys Lozada
José Luján
Manuel Rodriguez
José Luján
Luis Avilés
Álvaro Felipe
José Luján
Beto Quiroga
Jonathan MirCha
Jonathan MirCha
Álvaro Felipe
Alexys Lozada, Álvaro Felipe, Jonathan MirCha
Beto Quiroga
Alexys Lozada
Alexys Lozada
José Luján
Álvaro Felipe
Álvaro Felipe
Jonathan MirCha
Jonathan MirCha
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Alexys Lozada, José Luján
Camilo Adobe
Álvaro Felipe
José Luján
Jonathan MirCha
Álvaro Felipe
Álvaro Felipe
Beto Quiroga, Alexys Lozada
Álvaro Felipe
Juan Villalvazo
Luis Avilés
Jonathan MirCha
Jonathan MirCha
Jonathan MirCha

Agiliza tu desarrollo en Nodejs con el ORM sequelize

Sequelize es un ORM para Nodejs que te permitirá agilizar bastante tus desarrollos que incluyan bases de datos relacionales como MySQL o Postgress.

Nodejs con sequelize

Cuando hacemos algún desarrollo del lado del backend una de las tareas más comunes que podemos realizar es manipular bases de datos(Insertar, buscar, actualizar, borrar), para esto generalmente se escribe directamente la consulta SQL en el lenguaje de programación y asi conseguir los datos, un ORM (Object-Relational mapping) nos permite convertir tablas de una base de datos en entidades en un lenguaje de programación orientado a objetos, lo cual agiliza bastante el acceso a estos datos.

Sequelize es un ORM para Nodejs que nos permite manipular varias bases de datos SQL de una manera bastante sencilla, entre estas bases de datos podemos encontrar: mysql, sqlite, postgres, mssql.

Para instalar sequelize en nuestro proyecto de node solo tenemos que escribir las siguientes lineas en la consola:

$ npm install --save sequelize

# Instalar segun la base de datos a utilizar:
$ npm install --save pg pg-hstore
$ npm install --save mysql2
$ npm install --save sqlite3
$ npm install --save tedious // MSSQL

Con sequelize ya instalado lo siguiente es configurar nuestra conexión a la base de datos usando sequelize, para hacer esto lo hacemos de la siguiente manera:

const Sequelize = require('sequelize')

const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql'|'sqlite'|'postgres'|'mssql',
})

Lo primero que estamos haciendo es importar la clase Sequelize despues lo que se hace es crear una nueva instancia de esta clase que recibe como parámetros en su constructor, el nombre de la base de datos, el nombre del usuario, la contraseña, y un objeto de configuración donde especificamos el host de nuestra base de datos, el dialect que es donde ponemos que base de datos se esta utilizando.

Para verificar si nuestra conexión funciona, lo hacemos con el método authenticate() el cual nos devuelve una promesa que funciona de la siguiente manera:

sequelize.authenticate()
  .then(() => {
    console.log('Conectado')
  })
  .catch(err => {
    console.log('No se conecto')
  })

Modelos

Los modelos en sequelize nos permiten representar nuestras tablas y manipular estos datos, un modelo se define de la siguiente manera:

const User = sequelize.define('users', {
  id: {type: Sequelize.SMALLINT, primaryKey: true},
  firstname: Sequelize.STRING,
  lastname: Sequelize.STRING,
  email: Sequelize.STRING,
  pass: Sequelize.STRING,
})

Lo que se hace aqui es usar el método define() que recibe como primer parámetro el nombre de la base de datos, como segundo parámetro un objeto donde ponemos los atributos de nuestra tabla, donde podemos especificar que tipo de dato va representar este campo.

Consultas

Ya con este modelo creado podemos usarlo para consultar los datos de esta tabla, por ejemplo para buscar todos registros de esta tabla es tan sencillo como hacer lo siguiente:

User.findAll({ attributes: ['firstname', 'lastname', 'email', 'pass'] })
  .then(users => {
    console.log(users.toJSON())
  })
  .catch(err => {
    console.log(err)
  })

El método findAll() nos trae todos los registros de esta tabla y para acceder a ellos simplemente se ejecuta el método toJSON() que nos da un objeto con la información, este método findAll() tiene muchas opciones para hacer consultas más complejas para lo cual te invito a ver la documentación de sequelize.

Ahora si quisieramos mostrar el campo por el id podemos ejecutar el método findById():

User.findById(1,{ attributes: ['firstname'] })
  .then(user => {
    console.log(user.toJSON())
  })
  .catch(err => {
    console.log(err)
  })

Aqui en primer lugar se recibe el id que queremos buscar y como segundo parámetro un objeto donde especificamos diferentes opciones para mejorar nuestra consulta.

Tambien podemos hacer uso del objeto de configuración where que nos permite hacer una mejor selección de nuestros registros en nuestro método findAll o find, este objeto funciona de la siguiente manera:

User.findAll(
    where: {
        firstname: 'Alejandro'
    }
)
  .then(user => {
    console.log(user.toJSON())
  })
  .catch(err => {
    console.log(err)
  })

Esto es equivalente a escribir el SQL SELECT * FROM user WHERE firstname = 'Alejandro'.

Esto es todo por este articulo, te invito a visitar la documentación de sequelize.

Espero que pueda usar pronto sequelize en tus proyectos con node, hasta la próxima.

Suscríbete al blog de EDteam

Ingresa tu correo electrónico para recibir nuestro boletín semanal