sails-banner

Tutorial: Introducción a SailsJS y creación de una API con conexión a MySQL

SailsJs es un framework de NodeJs muy completo, potente y fácil de usar.

Tiene ventajas significativas, tales como:

  • Desarrollado 100% en Javascript
  • ORM (Gestor de acceso a bases de datos) para MongoDB, MySQL, Postgres, SQLServer, etc…
  • MVC (Un capa de modelo que solo define la estructura que tendrá en la base de datos y aplicación
  • APIRest automáticas (Genera un CRUD sin programar líneas de código)
  • Seguridad
  • Tiempo real y websockets
  •  Flexibilidad

En este tutorial crearemos un proyecto y crearemos una API que tendrá un CRUD de Usuarios con conexión a MySQL.

Paso 1: instalar SailsJS desde NPM (Sistema de repositorios de nodejs)

Si eres nuevo en nodejs, debes instalar el sistema de repo npm

Desde linux npm – linux

Desde windows instalar el ejecutable que se descarga en nodejs.org

Una vez instalado npm, procedemos a instalar SailsJs desde la línea de comandos (terminal o cmd)

Desde linux :

Dese windows o mac:

Una vez terminada la instalación, crearemos una carpeta para alojar nuestros proyectos en sailsJS, nos posicionaremos dentro de ella y ejecutaremos el siguiente comando:

Se desplegará el siguiente mensaje :

info: Created a new Sails app proyectoMysql!

Esto significa que nuestro proyecto ha sido creado correctamente.

Luego ingresamos a la carpeta del proyecto con el comando “cd proyectoMysql” y encontraremos todas los archivos y carpetas. Podemos abrir este directorio con un editor de texto o ide de programación y lugar de configuración y programación del framework.

Carpetas y archivos

proyectoMysql

  • Carpeta API: contiene nuestros controladores y modelos de nuestro proyecto (en este lugar debemos programar nuestra lógica de negocios)
  • Carpeta Assets: contiene las vistas y recursos css, js, imágenes, etc.. (Si solo desarrollaremos una API, esta carpeta no servirá de nada.
  • Carpeta Config: contiene nuestro archivos de configuración (puertos, rutas, conexiones a la base de datos, etc..)
  • Carpeta node_modules: contiene las librerías nodejs. Si queremos agregar una librería externa de nodejs no existirá problema.
  • Carpeta views: contendrá nuestras vistas que son llamadas desde nuestros controladores (carpeta API). Si solo desarrollamos una API, no será necesario utilizar esta carpeta.

Paso 2: Generar nuestros modelos y controladores

Existen dos formas de crear modelos y controladores. Desde línea de comandos o creando carpetas de manera manual.

Generalmente un controlador lleva asociado un modelo (no siempre es así) y SailsJs nos permite crear ambos conceptos de manera individual o en conjunto.

Desde nuestra raíz del proyecto escribiremos el siguiente comando desde nuestra consola:

En conjunto:

De esta forma creamos un controlado y un modelo de usuario

Si revisamos nuetra carpeta API -> controllers y API -> models, veremos que se han creado dos archivos javascript UsuarioController.js y Usuario.js

Individual:

Para crear un controlador

Para crear un modelo

 

Paso 3: Ingresar los atributos de nuestros modelo

Este paso es fundamental, los nombres de los atributos deben ser los mismos que tendrán en nuestra base de datos. SailsJs cuenta con un ORM completo y flexible (podemos configurar para que nuestras tablas tengan otro nombre en la base de datos que en el modelo)  nos permite generar las tablas y estructuras de manera automática. Para este tutorial, haremos que el framework cree nuestra estructura de base de datos en el motor MySQL.

Para esto nos iremos a la carpeta API -> models y abriremos el archivo Usuario.js

Ingresaremos como atributos, un nombre y un apellido.

De esta forma ya tenemos configurado nuestro modelo de usuarios, para que pueda leer nuestra base de datos y listar,ingresar información.

Paso 4: Configurar nuestra conexión a la base de datos

Para que nuestros modelos puedan interactuar con nuestra BD, debemos configurar los parámetros de conexión. Para esto debemos ir a la carpeta CONFIG y abrir el archivo connections.js

El ORM nos permite hacer multiples conexiones de diferentes motores y/o lugares. Para este ejemplo, solo configuraremos el framework, para que pueda usar MySQL.

nos dirigiremos a la línea siguiente e ingresaremos los datos correspondientes (debemos tener nuestra base de datos creada en mysq

Luego de este paso, abriremos el archivo models.js, que se encuentra en la misma carpeta CONFIG

Y des-comentaremos la siguiente línea y cambiaremos nuestra conexión a “someMysqlServer“:

Lo que acabamos de hacer es: decirle a nuestro framework que nuestra conexión persistente o principal será la que configuramos en nuestro archivo connections.js -> someMysqlServer.

Cada modelo puede tener su propia conexión (que se define de manera individual). Pero con esto, hacemos que nuestros modelos utilicen nuestra conexión de MySQL.

Paso 5: Ejecutar nuestra aplicación

Con estos pasos ya tenemos nuestro CRUD listo y automático pero que claramente nosotros podemos programar ciertas lógicas de negocios.

Para ejecutar nuestra aplicación debemos estar en la raiz de nuestro proyecto y ejecutar el siguiente comando:

o

(ambos comando realizan lo mismo)

Nos arrojará una pregunta que dice lo siguiente:

1. safe – never auto-migrate my database(s). I will do it myself (by hand)

(nunca auto-migrar nuestra base de datos)

2. alter – auto-migrate, but attempt to keep my existing data (experimental)

(migrar nuestra base, pero dejar datos ingresados anteriormente)

3. drop – wipe/drop ALL my data and rebuild models every time I lift Sails

(eliminar toda nuestra base de datos y reiniciar nuestras estructuras en la base de datos)

Para este tutorial, seleccionaremos la opción 2 ya que no contamos con datos ingrados anteriormente. (Esta pregunta solo se ejecuta en nuestro entorno de desarrollo, si queremos pasar a producción, debemos configurar nuestros archivos de la capeta CONFIG -> local.js

Al elegir 2 nos arrojará el siguiente error:

error: Trying to use unknown adapter, “sails-mysql”, in model usuario.
error: Are you sure that adapter is installed in this Sails app?
error: If you wrote a custom adapter with identity=”sails-mysql”, it should be in this app’s adapters directory.
error: Otherwise, if you’re trying to use an adapter named sails-mysql, please run npm install sails-mysql@0.11.x

Nos dice que no está instalado nuestro adaptador MySQL, para eso debemos ejecutar en nuestra consola, el siguiente comando:

npm install sails-mysql@0.11.x

Luego volvemos a ejecutar el comando para iniciar nuestra app y aparecerá una imagen de un bote :)

Selección_004

Ya tenemos nuestro servidor en funcionamiento y nuestra base de datos ya tiene una tabla creada

Selección_005

(sailsJs crea automáticamente los campos id, createAt y updateAt)

La ruta de nuestro proyecto y de la entidad usuario es el siguiente:

http://localhost:1337/Usuario

Y nuestro CRUD ya está funcionando a la perfección. para probarlo podemos instalar POSTMAN y jugar con las rutas, protocolos y formularios de ingreso:

post,get,update,delete, etc..

Paso 6: Programar en los controladores

Los controladores nos permite programar nuestras reglas de negocios. SailsJS tiene un concepto sumamente usado en los frameworks web -> las rutas son definidas en las funciones de nuestros controladores.

Crearemos una ruta desde nuestro controlador UsuarioController.js y retornaremos un json como respuesta.

Si ingresamos a : http://localhost:1337/Usuario/hola

nos imprimirá nuestra ruta.

 

De esta forma finaliza el tutorial de SailsJS !!!

Saludos !