Mi primera aplicacion con Nest.js

ronnymedina

Ronny Medina

Posted on September 3, 2020

Mi primera aplicacion con Nest.js

Configuración de Dockerfile para proyecto Nest.js: tutorial práctico

Si estas interesado un probar nuevas tecnologías quizás este post sea de tu interés. Hoy vengo a hablarte de Nestjs. Es un framework de nodejs que se basa en angular.

Esto quiere decir que viene con typescript, puedes implementar módulos como en angular, usar pipes, interceptor y mucho más...

Si te ha tocado configurar una aplicación en nodejs que tenga typescript, sabes que hay que hacer varias configuraciones. Como por ejemplo usar ts-node y un par de cosas más. O instalar paquetes adicionales como por ejemplo routing-controllers, si lo conoces.

La buena noticia es que nestjs, ya hace todo eso por ti. Viene con typescript, usa routing-controller y por defecto usa express, entonces que no tienes que preocuparte por configurar nada de eso.

Ejemplo con Nest.js

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.



NPM Version
Package License
NPM Downloads
Travis
Linux
Coverage
Gitter
Backers on Open Collective
Sponsors on Open Collective


Description

Nest framework TypeScript starter repository.

Installation

$ npm install
Enter fullscreen mode Exit fullscreen mode

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod
Enter fullscreen mode Exit fullscreen mode

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov
Enter fullscreen mode Exit fullscreen mode

Example

Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.

Stay in touch

License

Nest is…




Instalar el clic y crear un nuevo proyecto



npm i -g @nestjs/cli // instalar el clic

nest new example // crear el proyecto

cd example // navegar hacia el proyecto

npm run start:dev // run server 


Enter fullscreen mode Exit fullscreen mode

Con esto su servidor debe estar funcionando en http://localhost:3000/, y debe tener algo como esto en su directorio.

Alt Text

Para este ejemplo vamos a simular un endpoint de usuario, vamos a implementar la siguiente estructura de carpetas src/apis/users, ahí colocaremos todo lo correspondiente a users.

Crear un archivo con el siguiente nombre users.controller.ts

Alt Text

Para mantener las cosas ordenadas, vamos a crear nuestro primer modulo. Como en angular podemos hacer módulos en nest también, con esto podemos mantener todas las dependencias necesarias que necesite nuestro modulo.

Crear un index.ts

Alt Text

Importar nuestro modulo de users en app.module

Alt Text

Con eso debes poder navegar a la siguiente ruta http://localhost:3000/users/test. Ahora vamos simular nuestro service.

En nestjs a pesar que tiene varios paquetes que nos proveen soluciones, no vienen instalados por defecto, entonces nosotros debemos hacer la instalación manual, debemos instalar 2 paquetes necesarios para gestionar las validaciones.

  • npm i class-validator --save
  • npm i class-transformer --save

Crear un user.entity.ts

Alt Text

Crear un create.user.dto.ts

Class validator nos permite hacer validaciones mediante clases.

Alt Text

user.service.ts

El user.service.ts usa un decorador @Injectable(), con esto nos permite llamar a la clase mediante inyección de dependencias.

Alt Text

Resultado de nuestro users.controller.ts

Si se fijan estamos llamando a nuestro user.service en el constructor mediante la inyección de dependencias y nuestro método create recibe un parámetro que es la data enviada, y como es de tipo CreateUserDto automáticamente esto se ejecuta como un middleware que valida nuestra información antes que llegue a ejecutar nuestro método create.

Alt Text

Nuestro modulo user debemos indicar el servicio, si no la inyección de dependencias no funcionara.

Alt Text

Y por último nuestro main.js debe tener activado las validaciones.

Alt Text

Espero que te haya gustado, puedes ver el ejemplo completo en mi github con swagger y compodoc.

Una ultima mención es que si quieres integrar sequelize y tienes problemas debes usar la versión 5 ya que sequelize 6 no soporta typescript o si al correr los test con jest se produce un error bajar la versión de jest a la 24.

Si quieres ver otra implementación con base datos, solo házmelo saber mediante los comentarios.

💖 💪 🙅 🚩
ronnymedina
Ronny Medina

Posted on September 3, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Mi primera aplicacion con Nest.js
nestjs Mi primera aplicacion con Nest.js

September 3, 2020