[MÚSICA] [MÚSICA] Bien, creemos ahora el token. Y lo que vamos a hacer entrar a los models, files, token. Y a pegar directamente el código porque en este caso no hay mucho que escribir. El esquema del token básicamente acá lo que hacemos es guardar una referencia con el esquema de usuario que le pusimos, usuario. Vamos a poner esto por usuario. Entonces esto qué es lo que va a hacer, fÃjate bien. Esto es Mongoose. Vamos a guardar el id del usuario [INAUDIBLE] user id, y el tipo de este valor es, fÃjate que es un object id. Está bien. Entonces esto qué significa. Que pasa a una referencia a un objeto que está en una colección de usuario que es obligatorio y que lo vamos a referir como usuario. ¿Por qué? Esto le sirve a Mongoose para que cuando en mongo es a guardar el id directamente del usuario, está bien. Cuando lo hacemos un find, cuando nos traemos todos los usuarios a nuestro servidor donde hacemos ese tipo de consultas, acuérdate que Mongoose se pone en el medio entre nuestro modelo de objetos de la base de datos, en este caso mongo y lo que hace es cuando tiene los datos va a crear las instancias de los objetos y cuando encuentra este id, lo que va a hacer es armar el objeto usuario haciendo la consulta que corresponda y directamente trayendo el usuario entero dentro del objeto token que iremos a trabajar. Es decir, te pongo a hacer pruebas, pero cuando hagamos por ejemplo un find all de los token y tengamos la colección aquà en el servidor de los token, podamos hacer .user y vamos a tener acceso a todos los datos del usuario, al email, y todo como si estuviéramos operando directamente con el usuario. Bien. Vamos a poner propiamente el token que obviamente va a ser obligatorio y luego vamos a guardar la fecha de creación y fÃjate que acá introducimos un concepto nuevo que es el expires como te contaba antes y acá ponemos un valor. Este es una cantidad de tiempo. ¿Esto qué significa? Que este token, esto cuando llegamos a mongo es que este token se va a, este esquema mejor dicho, este documento dentro de la base se va a eliminar al momento que esto expire. Está bien, cuando ocurre esta expiración mongo la detecta y elimina el token directamente de la base de datos, es como que se autogestiona solo, y el token acuérdate que esto nos va a servir solamente para validar una cuenta de usuario. Por lo tanto una vez que el usuario esté validado you el token lo podemos eliminar, no se usa más, y si el usuario nunca se valida el token lo vamos a eliminar. Y eso lo hacemos automáticamente con el expires. De esa manera nos facilita bastante todo lo que es la gestión de estos datos. Por último, fÃjate que you acá vamos a empezar a trabajar con los mails y los tokens. Acá en los emails de los usuarios nos va a interesar que sean únicos, está bien, porque no queremos que haya más de un usuario con el mismo email con nuestro modelo, porque el email lo vamos a usar también para como la clave del usuario, para hacer el login y de todas formas no serÃa una propiedad de nuestro modelo que hayan varios usuarios que compartan el mismo email. Por lo tanto, lo que vamos a querer hacer es usar el valor unique. Ahora bien, este valor unique en Mongoose no está definido y lo tenemos que agregar, la validación de unique. Entonces vamos a instalar esta librerÃa, aquà desde la consola npm install mongoose-unique -validator--save. Bien. Y después por supuesto lo que vamos a tener que hacer es [INAUDIBLE], traerlo y vamos a tener que agregarlo, hay que hacer unos pasos, al esquema como plugin, usuario esquema .plugin unique validator you existe con otro usuario. El path en este caso es, esto referencia al atributo email you existe con otro usuario es el mensaje de error que vamos a definir. Bien, ¿qué son los plugins? Estos son como módulos o librerÃas que le vamos a, que no son parte directa de Mongoose sino que hay que incorporarlas para hacer cosas que las librerÃas no lo permitan, como puede ser esta validación del unique y hay varias validaciones más y otras, hay un montón de módulos como plugins de Mongoose que puedes chequear en la documentación y agregar los que te parezcan. Bien. Entonces repaso hasta ahora, tenemos los tokens, tenemos los usuarios, hemos vinculado un token a un usuario, todavÃa no hemos probado nada, you enseguida vamos a hacer unas, algunas pruebas, no te preocupes. Hemos visto cómo incluir validadores con los plugins de los esquemas, sobre los esquemas de Mongoose, hicimos un callback sobre el save antes de que se ejecute usando los eventos que tiene Mongoose para que nosotros nos podamos suscribir. Encriptamos los password para tener más seguridad, la función de validación que nos corresponde. Vamos a seguir ahora trabajando con los tokens y vamos a incorporarle lo que son los controllers y las rutas más una página de registración y login para empezar you a testear y trabajar nuestro modelo desde la web. Después vas a ver que cuando lo hagamos via api va a ser muchÃsimo más simple porque vamos a estar reutilizando todo esto mismo que vinimos trabajando. [MÚSICA] [MÚSICA]