En la programación, el experto en información, o el principio de experto, es un enfoque que se utiliza para determinar dónde delegar responsabilidades. En otras palabras, ¿dónde debe colocar el código que completa tareas específicas? El principio de experto en información ayudará a un desarrollador a colocar la responsabilidad en la clase con la mayor cantidad de información necesaria para cumplirla. En este tutorial vamos a limpiar el proceso de generación de JSON Web Tokens para que nuestro código sea más claro y fácil de mantener.


Eliminar código duplicado

Si ha estado siguiendo nuestro tutorial de registro de usuario para Node.js, sabe que actualmente estamos generando un JWT en más de un lugar. Tanto users.js como auth.js están realizando una tarea utilizando un código cortador de cookies. Debemos extraer esa lógica para que solo haya un lugar que genere el token. De esa manera, si algo cambia en el futuro, los realiza en un solo lugar, no en muchos. En nuestro caso, podemos agregar un método a un modelo de Mongoose para hacer esto.


Adición de un método a un modelo de mangosta

En este momento, el modelo de usuario se ve así.


/models/user.js

En el código anterior, el segundo argumento de la función mongoose.model () es una nueva instancia de mongoose.Schema (). Lo primero que debemos hacer es extraer esto a su propia constante así.

Con eso en su lugar, configurar el usuario ahora es una simple cuestión de esta línea.


Añadiendo el método al modelo de mangosta

Podemos agregar el método ahora al userSchema así.

El modelo de usuario ahora debe funcionar con los paquetes config y jsonwebtoken, por lo que nos aseguramos de incluirlos en la parte superior del archivo. El resto del código se explica por sí mismo con respecto a la extracción del esquema de usuario, la adición de un nuevo método y luego la creación de un nuevo modelo de usuario.

Ahora tenemos un buen método que podemos usar en otros lugares de nuestro código. Así que ahora observe los cambios en auth.js y users.js. Básicamente, hemos eliminado el código comentado y lo hemos reemplazado con una llamada a user.generateAuthToken ().


/routes/auth.js


/routes/users.js

¡Fantástico!


Probando The Refactor con Postman

Ese fue un buen refactor, pero debemos asegurarnos de que la API aún funcione como se esperaba. Aquí probamos con Postman enviando una nueva solicitud de publicación a http: // localhost: 4000 / api / users / con un objeto JSON en el cuerpo para un nuevo usuario. Tenga en cuenta que obtenemos un objeto de usuario adecuado en la respuesta, ¡así que esto significa que funcionó!
método personalizado modelo mangosta funcionando muy bien


Agregar un método a un resumen del modelo de Mongoose

En este tutorial, vimos rápidamente cómo agregar un método a un modelo de Mongoose para reducir el código duplicado en otras áreas de nuestra aplicación. Puede agregar tantos métodos como sea necesario siempre que tenga sentido y siga el Principio de experto en información.