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
A progressive Node.js framework for building efficient and scalable server-side applications, heavily inspired by Angular.
Description
Nest framework TypeScript starter repository.
Installation
$ npm install
Running the app
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
Test
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
Example
-
See documentation with swagger in http://localhost:3000/
-
Documentation with swagger only user module http://localhost:3000/docs/users/
-
POST to http://localhost:3000/users
{ "email": "eamil@gmail.com" }
-
Run documentation
npx compodoc -p tsconfig.json -s
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
- Author - Kamil Myśliwiec
- Website - https://nestjs.com
- Twitter - @nestframework
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
Con esto su servidor debe estar funcionando en http://localhost:3000/, y debe tener algo como esto en su directorio.
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
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
Importar nuestro modulo de users en app.module
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
Crear un create.user.dto.ts
Class validator nos permite hacer validaciones mediante clases.
user.service.ts
El user.service.ts usa un decorador @Injectable(), con esto nos permite llamar a la clase mediante inyección de dependencias.
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.
Nuestro modulo user debemos indicar el servicio, si no la inyección de dependencias no funcionara.
Y por último nuestro main.js debe tener activado las validaciones.
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.
Top comments (7)
Configuracion de docker para nestjs.
edulixir.com/2024/06/21/configurac...
Si tienes una app cliente que consuma los servicios de esta app nestjs en tu máquina local (ambas apps en tu máquina local), no te olvides de escribir lo siguiente en el fichero main.ts:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors(); // Habilita las conexiones entrantes locales.
await app.listen(3000);
}
bootstrap();
Muy buena guía.
¿Cómo podríamos separar las rutas de los controladores para ponerlas en un fichero aparte? ¿Se puede?
por lo que e visto no se puede, te dejo un link de un curso de nest que hice por si es de tu interés y puedes dejarme tus sugerencias youtube.com/playlist?list=PLutnWmY....
Nestjs es lo mejor, descubri este framework buscando una alternativa a node con express y es de lo mejor, es facil de configurar y de usar y las grandes cosas que se pueden hacer con el.
Que ventajas o desventajas tiene este framework comparado a Laravel?
Laravel es un framework mucho mas maduro que nest, la ventaja o desventaja que puedes sacar va a depender de lo que quieras hacer