‫Instructor: En este video, continuemos traduciendo
‫el modelo de datos que establecimos al principio
‫de la sección en un código real.
‫Entonces, esta vez implementaremos el modelo de revisiones.
‫Entonces, el primer paso es crear un nuevo archivo en
‫la carpeta de modelos y llamarlo ReviewModel. js.
‫Y para mí, esto parece otro gran desafío para que
‫practique algunas de las habilidades
‫que ya aprendió hasta este momento.
‫De acuerdo, en este desafío, quiero que cree el
‫modelo de revisión.
‫Y lo que necesitamos allí es realmente muy simple.
‫Permítanme poner eso aquí en un comentario.
‫Así que básicamente queremos una revisión,
‫por lo que el texto para la revisión.
‫Queremos
‫una calificación así.
‫Luego también queremos un createdAt so con la
‫marca de tiempo actual
‫y luego también queremos una referencia al recorrido al que
‫pertenece esta revisión
‫y también al usuario que escribió esta revisión.
‫Bien, básicamente dos referencias de los padres aquí, cierto.
‫Y así, con las cosas que
‫aprendiste en las últimas
‫conferencias, deberías poder completar este desafío por
‫tu cuenta.
‫Entonces, pausa el video ahora y buena suerte con eso.
‫Bien, espero que no te hayas saltado
‫esto y, en cambio, lo hayas implementado tú mismo y,
‫de todos modos, así es como lo creé.
‫Entonces, por supuesto, debemos comenzar por requerir mangosta y luego
‫el esquema
‫de revisión es igual a nueva mangosta. Esquema.
‫Entonces comencemos a agregar nuestros campos.
‫Entonces, primero la revisión es, por supuesto, una cadena.
‫Ahora bien, y por supuesto, estoy haciendo esto
‫demasiado rápido, así que también necesito especificar
‫el tipo y luego configurémoslo
‫en
‫un requisito, verdadero, la revisión no puede estar vacía.
‫Entonces queremos una calificación,
‫y esta es del tipo número.
‫Y la calificación ideal es entre uno y cinco.
‫Y entonces el mínimo de uno y el máximo es cinco.
‫Entonces, como
‫ya sabe, estos son algunos validadores simples.
‫Eso funciona solo para números, ¿verdad?
‫Esto no es correcto aquí.
‫Bueno.
‫A continuación, el createdAt.
‫En esto es de tipo,
‫fecha y, por defecto, queremos
‫Fecha. ahora.
‫Bueno.
‫Así que esta fue la parte fácil.
‫Y también creemos un modelo
‫y exportémoslo antes de agregar estas referencias.
‫Así que const, Review es
‫igual demasiado mangosta. modelo con el
‫nombre Review.
‫Y luego, por supuesto, reviseSchema.
‫Para finalizar el módulo del curso. la exportación
‫es igual a la revisión.
‫Muy bien, y ahora viene la parte de referencia.
‫Por lo tanto, una revisión, por supuesto, debe pertenecer a un recorrido.
‫Y también necesita un autor.
‫Bueno.
‫Así que eso es nuevamente lo que
‫especificamos en nuestra conferencia de modelado de datos.
‫Básicamente, íbamos a implementar
‫referencias de padres aquí en este caso.
‫Porque tanto el recorrido como el usuario son, en cierto
‫sentido, los padres de este conjunto de datos.
‫Y decidimos hacerlo de esta
‫manera porque potencialmente
‫vamos a borrar enormemente cualquier elemento principal, ¿verdad?
‫Por eso no debemos diseñar nuestra
‫aplicación pensando que solo habrá unas pocas revisiones.
‫Solo para luego volver a él después de un
‫tiempo y descubrir que nuestras suposiciones estaban equivocadas.
‫Y ahora necesitamos reconstruir todo nuestro modelo de datos.
‫Entonces eso sería terrible.
‫Entonces, en muchas situaciones, como ya sabe
‫lo que realmente no sabemos, cuánto crecerá nuestro borrado.
‫Entonces es mejor optar por la referencia de los padres.
‫Así que, de nuevo, eso es exactamente lo que
‫estamos haciendo aquí cuando hacemos referencia al tour y al usuario.
‫Así que, en realidad, sigamos adelante e implementemos eso.
‫Y empezando por el tour.
‫Bien.
‫Entonces aquí necesitamos algo de espacio, y está bien.
‫Entonces el tipo es como lo hicimos antes, mangosta, y eso
‫no es correcto.
‫Tan mangosta. Esquema. ObjectId, con una
‫O mayúscula y una I mayúscula, pero no D.
‫Y solo
‫te lo digo porque una vez escribí una identificación
‫como esta y luego pasé media hora tratando de
‫averiguar por qué mi aplicación no funcionaba.
‫Bien, entonces esta D debe estar en minúsculas.
‫De todas formas.
‫La referencia en este caso es, por supuesto, el recorrido.
‫Y también queremos que esto sea obligatorio.
‫Tan cierto y luego Review debe pertenecer a
‫un recorrido.
‫Bueno.
‫Y así, cada documento de revisión ahora sabe
‫exactamente a qué recorrido pertenece también.
‫Si bien el recorrido, por supuesto, no
‫sabe inicialmente qué Reseñas y cuántas Reseñas hay.
‫Pero ese es un problema
‫que de hecho resolveremos un poco más tarde.
‫Bueno.
‫A continuación, cuando hay una revisión, no solo
‫queremos saber a qué tour pertenece, sino
‫también quién escribió esta revisión.
‫Entonces
‫usuario, y nuevamente, el mismo
‫tipo de mangosta. Esquema. ObjectId, y
‫esta
‫vez la referencia, como puedes imaginar, será user.
‫De acuerdo, y nuevamente lo hacemos
‫obligatorio porque, bueno, una revisión realmente no puede
‫funcionar sin un autor básicamente.
‫Por tanto, la
‫revisión debe pertenecer a un usuario.
‫Está bien, eso es todo.
‫Bien.
‫Ahora, para terminar, agreguemos también estas opciones al
‫esquema donde lo hacemos para que las propiedades virtuales también se
‫muestren en Json y en las salidas de los objetos.
‫Bueno.
‫Así que hicimos eso antes en las giras.
‫No estoy seguro de si lo hicimos en el modelo de usuario.
‫Pero de todos modos, aquí lo vamos a
‫necesitar un poco más tarde.
‫Entonces necesitamos especificar eso.
‫Recuerde, básicamente lo que quiero decir
‫es esta parte.
‫Así que voy a seguir adelante y copiarlo.
‫Solo para ahorrarnos algo de tiempo.
‫Y nuevamente, todo lo que esto hace es realmente asegurarse de que
‫cuando tengamos una propiedad virtual, básicamente
‫un campo que no esté almacenado en la base de
‫datos, sino que se calcule usando algún otro valor.
‫Así que queremos que esto también se muestre siempre que haya una salida.
‫Bien, y eso es lo que hacemos aquí.
‫Bueno.
‫Y creo que eso es todo por ahora.
‫Muy simple.
‫La única parte un poco complicada es crear
‫estas referencias aquí.
‫Pero en realidad lo hicimos antes
‫y, por lo tanto, realmente funciona exactamente de la misma manera.
‫Entonces, en el siguiente video, usaremos
‫el esquema para crear algunas revisiones nuevas.
‫Así que nos vemos entonces.