‫Instructor: Ahora completemos las reseñas con
‫los datos del usuario y del recorrido.
‫Así que, al igual que hizo en el
‫recorrido, hagamos ahora para que tanto el recorrido como el
‫usuario se completen automáticamente cada vez que haya una consulta para una revisión.
‫Como ya hicimos eso antes,
‫ahora te daré otro desafío, está bien.
‫Así que quiero que sigas adelante y
‫lo hagas como lo hicimos nosotros en los recorridos, pero ahora para las reseñas.
‫Solo una pista que debo
‫darte antes de que puedas hacer esto
‫por tu cuenta, es que cuando quieras
‫completar dos campos, debes llamar a completar dos veces.
‫Así que una vez para cada uno de los campos, está bien.
‫Con esa información, debería estar
‫listo para pausar el video ahora y probarlo.
‫Así que espero que no haya sido demasiado difícil.
‫Sigamos adelante y cierre algunos archivos aquí, para que todo
‫lo que no esté relacionado con las revisiones, ya
‫no lo necesitemos.
‫Así que vayamos al modelo de revisión y luego implementemos
‫o busquemos previamente el middleware.
‫Así que hacemos eso en el esquema,
‫como ya sabe, y luego nuevamente usamos una expresión
‫regular para hacer coincidir básicamente cadenas, que comienzan con encontrar.
‫Entonces, nuevamente, esto va a funcionar para encontrar,
‫para encontrar uno, y todos los demás métodos de encontrar uno que
‫están disponibles en Mongoose.
‫Como siempre, empiezo escribiendo a continuación.
‫Y ahora realmente todo lo que tenemos que
‫hacer es llamar a populate en la consulta actual, entonces esto. rellenar, y ahora especificaré
‫el objeto de opciones porque solo quiero seleccionar
‫un par de campos y no todo
‫el recorrido, y tampoco todo el usuario.
‫Así que recuerde, comenzamos con la propiedad de la ruta,
‫y esta será para un recorrido.
‫Entonces, nuevamente, al especificar tour aquí, significa que este campo aquí,
‫que tiene el nombre exacto, será el
‫que se rellene en función de un
‫modelo de tour.
‫Bueno, porque eso es lo que especificamos aquí, está bien.
‫Entonces, la referencia es a un
‫modelo llamado tour, y básicamente es en esa
‫colección donde Mongoose buscará documentos con el ID que especificamos.
‫De acuerdo, queremos una gira, pero digamos que en realidad solo
‫queremos el nombre de la gira
‫y nada más.
‫Así que seleccione, está bien, y luego solo el nombre, y luego, como
‫dije, si queremos completar varios campos, bueno, todo lo que tenemos
‫que hacer es llamar a poblar nuevamente.
‫Entonces, en este punto, la consulta se completa con los recorridos, y
‫ahora debemos completarla nuevamente, esta
‫vez con el usuario.
‫Y ahora seleccione, y
‫eso en realidad solo muestra el nombre de usuario y la foto, y
‫no, por ejemplo, cosas como el correo electrónico.
‫Entonces, digamos que
‫alguien accede a la API para obtener todas
‫las revisiones, pero no queremos filtrar todos los
‫detalles sobre los usuarios que publican estas revisiones en el cliente.
‫Por lo tanto, nadie debería poder conocer los
‫datos privados sobre los revisores, como los correos electrónicos, está bien.
‫Entonces, nuevamente, solo filtramos, solo enviamos datos relevantes sobre el usuario, y
‫en este caso, es el nombre y la foto, está bien.
‫Así que guarde esto, y si ahora alcanzamos o obtenemos todos
‫los puntos de finalización de las revisiones, entonces
‫ya debería completarse el recorrido y el usuario en lugar de que
‫nosotros solo veamos las ID allí.
‫Probemos eso, y aquí vamos.
‫Entonces eso está funcionando, obtenemos el nombre
‫y, por supuesto, también la identificación, y luego lo mismo para el usuario.
‫Entonces obtenemos el nombre, pero luego no la foto.
‫Entonces, veamos, tal vez no obtuve, especifique la propiedad de la
‫foto, así que echemos un vistazo a eso.
‫Entonces el modelo de usuario, pero en realidad está ahí.
‫No, lo siento, por supuesto que no vemos la foto porque
‫nunca especificamos ninguna foto para ninguno de nuestros usuarios.
‫De acuerdo, y por lo tanto, la única propiedad que realmente existe
‫es el nombre, y eso es lo que obtenemos.
‫Está bien, y eso es todo.
‫Muy simple, eso es todo lo que necesitamos hacer para
‫obtener todos los datos
‫relacionados, y tal como lo especificamos en nuestro modelo de datos.
‫Ahora, nuevamente, solo
‫tenga en cuenta que este agregará algunas consultas
‫adicionales, y en este caso, en
‫realidad son dos consultas, porque detrás
‫de escena, Mongoose realmente tendrá que consultar tanto los recorridos
‫como los usuarios para encontrar el documento correspondiente, está bien.
‫Entonces esto probablemente
‫debería agregar algo de tiempo aquí a la consulta.
‫Entonces tomó 266 milisegundos, así.
‫Simplemente, por el bien de experimentar, comentemos este
‫código y luego intentemos de nuevo.
‫Y esto está tomando mucho tiempo, no estoy seguro de por qué.
‫Así que hagámoslo de nuevo, y ya ve, 157 milisegundos,
‫y si ahora lo devolvemos, hagámoslo de nuevo.
‫Y, de nuevo, lleva mucho
‫tiempo y, de nuevo, lo hago dos veces.
‫Pero aún ves que tomó un poco más de tiempo, está bien.
‫Así que no fue
‫el fin del mundo, fue como 100 milisegundos más,
‫pero cuando alcanzas una cierta
‫escala, eso puede marcar la diferencia.
‫De nuevo, solo quiero que lo tengas en cuenta.
‫De todos modos, eso es todo para esta conferencia, así que sigamos adelante.