‫Instructor: Bienvenido de nuevo.
‫Por lo tanto, la autenticación y la autorización
‫se trata de que los usuarios se
‫registren, inicien sesión y accedan a páginas o rutas, y
‫les otorgamos permiso para hacerlo.
‫Entonces, realmente se trata de los usuarios.
‫Y, entonces, debemos comenzar implementando el modelo de usuario en esta
‫lección, de modo que en la
‫siguiente, podamos crear nuevos usuarios en nuestra base de datos.
‫Entonces, de vuelta en nuestra aplicación, sigamos adelante
‫y creemos un nuevo archivo para el modelo de usuario.
‫Entonces, por supuesto, en nuestra carpeta de modelo,
‫New File, userModel. js.
‫Y al igual que
‫antes, comenzamos solicitando el paquete Mongoose.
‫Está bien.
‫Y ahora, todo lo que tenemos que hacer es crear un esquema
‫y luego crear un modelo a partir de él.
‫Así que, al igual que hicimos con
‫los recorridos, lo haremos aquí ahora con los usuarios.
‫Y de hecho, como ya hicimos eso
‫antes, quiero dejar este como un desafío para ti, ¿de acuerdo?
‫Entonces quiero que cree un esquema con cinco campos.
‫Entonces, nombre, correo electrónico, luego una foto;
‫que va a ser una cuerda, como
‫en nuestras giras.
‫También quiero un campo para una
‫contraseña y para una contraseñaConfirmar.
‫¿Okey?
‫Y un poco más
‫sobre eso más adelante, cuando resuelva este
‫desafío para usted, pero por ahora, realmente quiero que
‫practique para crear este esquema por su cuenta
‫y luego también cree un modelo a partir de ese esquema, ¿de acuerdo?
‫Y luego, al final, también puede exportarlo.
‫Así que pausa el video en este punto
‫y volveré en un segundo para
‫resolver este desafío por ti.
‫Está bien.
‫Espero que hayas completado ese desafío.
‫Y ahora lo resolveré.
‫Y no se preocupe si no se ve exactamente igual.
‫Simplemente puede adaptarlo a medida que avanzamos en este video.
‫Entonces, a través de esta solución.
‫Entonces, voy a llamar a este userSchema.
‫Y al igual que antes, creamos una nueva mangosta. Esquema.
‫Y luego en eso, pasamos nuestro objeto de
‫esquema y comenzamos a definir nuestros campos.
‫Entonces, quiero un nombre con el tipo, por supuesto, de String.
‫Y también quiero que sea necesario.
‫Entonces, cada vez que se
‫crea un nuevo usuario, debe decirnos su nombre básicamente.
‫Entonces, establezcamos un mensaje de error aquí también.
‫"¡Dinos tu nombre! " ¿Está
‫bien?
‫Entonces ese es el nombre.
‫A continuación, queremos el correo electrónico.
‫¿Está bien?
‫Entonces, esto se usará para que el usuario inicie
‫sesión y no crearemos una propiedad de nombre de usuario aquí, ¿de acuerdo?
‫Entonces, en algunas aplicaciones, verá que se usa un nombre de
‫usuario, pero en este caso, queremos que
‫sea simple aquí y simplemente identificar a los usuarios por correo electrónico.
‫Y nuevamente, esto es del tipo String.
‫También es un campo obligatorio.
‫Así que de nuevo un mensaje de error.
‫A continuación, quiero que los correos electrónicos también sean únicos, ¿de acuerdo?
‫Entonces, único establecido en verdadero.
‫Y eso es básicamente porque este correo electrónico
‫es, por supuesto, el identificador único de cada usuario, ¿de acuerdo?
‫Ahora, de forma predeterminada, los correos electrónicos deberían ser únicos, ¿verdad?
‫Pero estemos 100% seguros aquí de que no
‫habrá cuentas con
‫la misma dirección de correo electrónico, ¿de acuerdo?
‫Ahora también podemos especificar aquí otra opción de tipo de
‫esquema, que está en minúsculas.
‫Así que es uno nuevo.
‫Y no es un validador.
‫Todo lo que hará es
‫básicamente transformar el correo electrónico en minúsculas.
‫Entonces, si alguien dice como Jonas @ Gmail o lo que sea,
‫entonces se convertirá todo a minúsculas.
‫¿Okey?
‫Y ahora, finalmente, también queremos validar la dirección
‫de correo electrónico.
‫Básicamente, probando si el correo electrónico
‫proporcionado corresponde al formato de correo electrónico común, ¿de acuerdo?
‫Entonces, por ejemplo, nuevamente jonas @ gmail. com sería un correo electrónico
‫válido, pero
‫por ejemplo, así, no lo sería.
‫O así.
‫Y para eso, necesitamos crear nuestro
‫propio validador básicamente.
‫Ahora no vamos a crear nuestro
‫propio validador para eso, sino que usaremos ese
‫paquete validador que les mostré antes de npm, ¿verdad?
‫Así que recuerde aquí en el tourModel, en
‫realidad les mostré este módulo aquí, pero
‫luego no terminamos usándolo
‫porque no era realmente útil en nuestro caso.
‫Pero ahora, será bastante útil, así
‫que seguiré adelante y lo copiaré aquí, está
‫bien, para que ahora podamos usarlo correctamente en nuestro esquema.
‫Entonces, para crear ahora nuestro validador
‫personalizado, usamos validar, ¿recuerdas?
‫Y luego pasamos el mensaje de función
‫anti-error, al igual que con nuestros otros validadores.
‫Y para comprobar si un correo electrónico es
‫válido, todo lo que tenemos que hacer es llamar al método isEmail en
‫el objeto de validación, ¿de acuerdo?
‫De modo que, nuevamente, proviene de la
‫documentación, que les mostré antes cuando usamos este módulo por primera vez.
‫Y así, siempre que necesite un validador personalizado,
‫puede seguir adelante y verificar la documentación
‫y encontrar si hay una buena función para su caso de uso.
‫Entonces, en este caso, eso es validador. Correo electrónico, y
‫nuestro mensaje de error será
‫"un correo electrónico válido", ¿de acuerdo?
‫Y en el siguiente video, cuando creemos usuarios
‫a partir de este modelo, entonces, por supuesto, probaremos todo esto
‫para ver si funciona.
‫A continuación, también quiero que el usuario
‫pueda básicamente cargar una foto.
‫Y lo almacenaremos simplemente en una cadena.
‫Pero no es obligatorio, ¿de acuerdo?
‫Por lo tanto, una foto suele ser opcional en la mayoría de las aplicaciones web, por
‫lo que haremos lo mismo aquí.
‫Entonces, si el usuario desea cargar una
‫foto, entonces se almacenará en algún lugar de nuestro sistema
‫de archivos y la ruta a esa foto se
‫almacenará en este campo de fotos, ¿de acuerdo?
‫Entonces eso es similar a lo que teníamos aquí.
‫Recuerde, tenemos, sí,
‫tenemos imageCover, por lo
‫que también es simplemente la ruta del
‫lugar en nuestro sistema de archivos
‫donde realmente se carga la imagen.
‫¿Está bien?
‫Así que esa es la foto.
‫Y ahora necesitamos contraseña.
‫Y la contraseña debería ser, nuevamente, del tipo String.
‫Eso no es correcto.
‫Y la contraseña, por supuesto, es necesaria, ¿verdad?
‫Tan verdadero.
‫"Proporcione una contraseña. "Y
‫también vamos a imponer una regla de contraseña muy simple,
‫que es que una contraseña debe tener
‫al menos ocho caracteres.
‫¿Entonces cómo hacemos eso?
‫Bueno, eso es bastante fácil.
‫Todo lo que tenemos que hacer
‫es minlength y establecerlo en ocho en este caso.
‫Y esa es en realidad la única regla de
‫contraseña que vamos a imponer.
‫Y muchas aplicaciones tienen todas estas reglas locas
‫como al menos un número y un carácter y un símbolo, pero
‫no implementaremos nada de eso aquí
‫porque en realidad se ha
‫descubierto que eso no es realmente efectivo, ¿de acuerdo?
‫Por lo general, las contraseñas más
‫seguras son las más largas, está
‫bien, y no estas con símbolos y caracteres locos y
‫todo eso.
‫Eso es suficiente para la contraseña por ahora,
‫pero crearemos algunos campos más específicos aquí
‫para la contraseña cuando comencemos a administrar contraseñas en la base
‫de datos, ¿de acuerdo?
‫Pero por ahora, eso es suficiente aquí.
‫Y ahora es passwordConfirm.
‫Entonces, ya sabe con qué frecuencia cuando crea una
‫nueva cuenta en alguna aplicación web, siempre
‫debe ingresar su contraseña y luego confirmarla solo para asegurarse de que
‫sean las mismas.
‫Y para eso es este campo.
‫Entonces, por supuesto, también es de tipo String.
‫Y, por supuesto, también es obligatorio.
‫Bueno.
‫Y nuevamente, crearemos algunas propiedades más aquí en la
‫opción de tipo de esquema un poco más tarde, ¿de acuerdo?
‫Específicamente, validadores para ver si la contraseña de
‫confirmación es realmente la misma que la contraseña principal, ¿de acuerdo?
‫Pero por ahora, este esquema es suficiente, por
‫lo que tiene estos campos que les pedí que crearan
‫en el desafío.
‫Y ahora, en realidad, todo lo que tenemos que hacer es
‫seguir adelante y crear el modelo a partir del esquema.
‫Entonces, el usuario, con una U mayúscula,
‫solo para seguir esa convención de que las variables
‫del modelo suelen ser siempre
‫con una letra mayúscula, luego una mangosta. model, y luego pasar el nombre del modelo
‫y, por supuesto, queremos que este
‫se llame Usuario y se cree a partir del userSchema que creamos antes.
‫Y luego módulo. exportaciones establecidas en Usuario.
‫Y eso es.
‫Ese es nuestro esquema de usuario simple que
‫nos permitirá comenzar a crear usuarios
‫en el siguiente video.
‫Entonces, nos vemos para entonces.