×

Encuéntranos

Dirección
Eustorgio Salgado N19-275 y Santa Rosa
Ecuador, Quito

Horas
Lunes a viernes: 8:00AM a 6:00PM
Sábado y domingo: 11:00AM a 3:00PM

1 Tickets de Soporte https://jtrac.atikasoft.com/

Si aún tiene problemas, háganoslo saber enviando un correo electrónico a info@atikasoft.com. ¡Gracias!

 

Patrón Repository en NodeJs con Express y MongoDb

Primero debemos crear nuestro proyecto de npm, en un terminal ubicado en donde queremos crear el proyecto ejecutamos los siguientes comandos.

npm init

npm i express express-async-errors awilix cors compression helmet memory-cache mongoose

npm i -D dotenv nodemon

Con nuestro proyecto iniciado y con las dependencias que utilizaremos instaladas crearemos la siguiente estructura de archivos y ficheros.

Primero en la carpeta config creamos un archivo index.js aquí vamos a cargar las variables de entorno que necesitaremos como la conexión a mongodb, el puerto en el que se levantará la aplicación; para eso utilizaremos la librería dotenv que instalamos.

En la carpeta models vamos a crear un modelo de notas con el nombre note.model.js y crearemos un Schema de Mongoose; también crearemos un archivo index.js en donde debemos exportar el modelo de notas.

En la carpeta repositories vamos a crear un archivo base.repository.js donde podemos poner todos los métodos que queremos heredar a nuestros repositorios por ejemplo, crear, actualizar, listar y eliminar para heredar toda la funcionalidad de CRUD con solo heredar de nuestra clase base.

También crearemos nuestro note.repository.js heredaremos de BaseRepository aquí crearemos métodos exclusivos del manejo de la entidad de Notas. Por último también crearemos el archivo index en donde exportaremos todos los modelos que creemos en esta carpeta.

En la constructor de NoteRepository estamos usando { Note } en lugar de hacer un require de nuestro modelo ya que mediante la librería awilix que instalamos al principio inyectaremos las dependencias basadas en el nombre que le asignemos, con esto awilix se encargará de resolver la inyección y tener accesible el modelo en tiempo de ejecución.

En la carpeta services crearemos tres archivos: note.service.js, index.js y base.service.js; Los servicios serán los encargados de la lógica de negocio e interactuar con los repository para devolver una respuesta al usuario. De la misma manera que creamos un BaseRepository crearemos un BaseService para poder heredar a los servicios específicos del negocio, con la finalidad de poder heredar toda la funcionalidad CRUD con solo heredar de nuestra clase base.

En nuestra clase NoteService tenemos que heredar de BaseService y si es el caso agregar alguna funcionalidad extra que deseemos. Al igual que en los repositorios insertaremos {NoteRepository} mediante inyección de dependencias en el constructor En el archivo index tenemos que exportar todos nuestros servicios.

En la carpeta routes crearemos tres archivos: note.route.js, index,js e index.route.js. En el archivo note.route.js escribiremos las rutas específicas de nuestras Notas.

En nuestro archivo index configuraremos las rutas de nuestra API, configuraremos CORS y Helmet que nos ayuda con algunas configuraciones de seguridad en nuestra aplicación Las rutas específicas insertadas en la función que se exporta son inyectadas En el archivo index.route exportamos todas las rutas que creemos.

En la carpeta startup creamos un archivo index.js y crearemos una clase en donde vamos a configurar nuestra aplicación Express e iniciar nuestra aplicación.

En la misma carpeta creamos un archivo container.js donde vamos a configurar nuestra inyección de dependencias con sus nombres para que awilix pueda resolver la dependencia mediante un nombre.

Por último en nuestro archivo index principal vamos a llamar a nuestra clase que inicia nuestra aplicación.

Con este tenemos todo nuestra aplicación con el patrón Repository implementado, ahora solo debemos ejecutar el comando nodemon index.js para levantar nuestra aplicación y listo!.

 

TOP