‫Instructor masculino: ¡Hola!
‫Así que ahora aprendamos a leer documentos con Mongoose para implementar
‫u obtener un recorrido y obtener todos los controladores de ruta
‫del recorrido.
‫Y comenzando con el controlador getAllTours.
‫Primero que nada, eliminemos este fragmento de código aquí.
‫Y ahora lo
‫que vamos a hacer para obtener todos los recorridos de
‫la base de datos es utilizar Tour.
‫Entonces el modelo de nuevo.
‫Al final, usamos el método de búsqueda.
‫Está bien.
‫Así que recuerde de la intersección de MongoDB,
‫donde cuando queríamos consultar todos los documentos,
‫simplemente usamos buscar, ¿de acuerdo?
‫Y aquí, es exactamente el mismo método.
‫Y de nuevo, cuando no le pasamos nada, así
‫como lo estamos
‫haciendo aquí, devolverá todos los documentos
‫de esa colección, ¿de acuerdo?
‫Entonces, en este caso, en la colección del tour, obviamente.
‫Ahora, como antes, esto devolverá una promesa
‫que esperaremos.
‫Y como queremos esperar,
‫necesitamos hacer de esto una función asíncrona.
‫Tan asincrónico.
‫Entonces aquí podemos esperar y guardar el resultado en recorridos.
‫Está bien.
‫Y eso es todo.
‫Entonces, eliminemos estos comentarios aquí.
‫Tampoco queremos la propiedad requiredAt.
‫Así que eso fue solo para probar antes.
‫Y entonces, sí, creo que eso es todo.
‫Así es como obtenemos todos los tours
‫de la colección Tour.
‫Entonces, use buscar, luego espere ese resultado
‫y luego envíelo aquí.
‫Así que recuerde que tenemos esta propiedad de
‫datos aquí para envolver básicamente los recorridos.
‫Y luego también enviamos esta propiedad aquí, que
‫simplemente mide la cantidad de resultados que
‫hay en los recorridos, de acuerdo.
‫¿Okey?
‫Porque, por supuesto, este método de búsqueda
‫aquí devolverá una matriz de todos estos documentos y
‫también los convertirá muy bien en
‫objetos JavaScript, ¿de acuerdo?
‫Entonces, esta función aquí, este método de búsqueda,
‫realmente hace todo el trabajo por nosotros.
‫Ahora, al igual
‫que antes, un paso más antes de que podamos probar esto,
‫que es envolver todo esto aquí en el bloque de
‫prueba y luego detectar cualquier error potencial.
‫Ahora, en
‫este caso, no habrá ningún error de validación como antes.
‫Pero sigamos enviando un error aquí, en este
‫caso, y hagámoslo un 404.
‫Y realmente no importa tanto en este punto porque, nuevamente,
‫vamos a implementar un mejor manejo de
‫errores aquí en la
‫próxima sección, o en una de las siguientes.
‫¿Está bien?
‫Así que configurémoslo aquí en status: 'fail', y
‫el mensaje para cualquier error que podamos obtener aquí.
‫Bueno.
‫Entonces, probémoslo ahora.
‫Es este, Get All Tours.
‫Y, sí, funciona.
‫Así que aquí tenemos el conjunto de los tres recorridos
‫que tenemos actualmente en nuestra base de datos.
‫Perfecto.
‫Entonces, a continuación, implementemos el controlador getTour.
‫Así que escribamos el siguiente que tenemos aquí.
‫Y eliminemos este código
‫y este código.
‫Está bien.
‫Y este realmente funcionará de una manera muy similar.
‫Así que sigo haciendo este intento de captura aquí.
‫Entonces error, así.
‫Porque todavía estamos usando async await en este.
‫Tan asincrónico.
‫Porque ahora para encontrar un
‫tour, todavía vamos a estar esperando Tour. encontrar.
‫Pero no será solo
‫buscar, sino que usaremos findById, de acuerdo.
‫Entonces, findById, pero ¿de dónde proviene realmente esa identificación?
‫¿Recuérdalo?
‫Así que echemos un vistazo a la ruta.
‫Así que volviendo aquí a Postman,
‫así es como llamamos a este punto
‫final, oh, vamos a poner una ID más real aquí.
‫Entonces, por ejemplo,
‫este de The Park Camper.
‫Y entonces nuestra solicitud podría provenir de una ruta como esta.
‫Y aquí, tenemos este parámetro
‫de ID en nuestra ruta, ¿verdad?
‫Así que echemos un vistazo a nuestro enrutador aquí.
‫Y recuerda que así es como lo
‫especificamos, el ID en la URL.
‫Entonces, esta identificación será parte de la solicitud, obviamente.
‫Entonces, ¿cómo obtenemos acceso a esa identificación aquí y
‫a este controlador?
‫Bueno, sí req. params, id.
‫Y es
‫ID porque así es como llamamos a esta variable aquí, ¿verdad?
‫Si era el nombre aquí,
‫entonces aquí teníamos req. params. nombre, ¿verdad?
‫¿Recuérdalo?
‫Y ahora, dejemos eso para la gira.
‫Ahora bien.
‫Entonces, recuperemos este código aquí.
‫Cópialo aquí.
‫Y luego también este para el bloque de error.
‫Y no se preocupe, voy a explicar esta función aquí
‫en un segundo.
‫Solo quiero terminar este código aquí primero.
‫Entonces, este fragmento de código será exactamente el mismo
‫para este bloque de captura.
‫Guárdelo ahora,
‫y así no obtendremos errores aquí de eslint.
‫Ahora sobre este método de búsqueda
‫de ID aquí, bueno, recuerde cómo aquí usamos buscar, ¿de acuerdo?
‫Entonces buscar es encontrar todos los documentos.
‫Y luego también tenemos
‫findOne para encontrar solo un documento, ¿de acuerdo?
‫Y entonces este findById es realmente solo una abreviatura, así
‫que una función auxiliar para, déjame
‫escribirlo aquí como un comentario,
‫para escribir findOne,
‫y luego con el objeto de
‫filtro, que es exactamente como
‫aprendimos en la intersección MongoDB.
‫Entonces tenemos el campo ID.
‫Y luego podríamos configurar eso para req. params. identificación.
‫Entonces, esto de aquí funcionaría exactamente de la misma manera que esto, ¿de acuerdo?
‫Entonces _id, porque así es como se ve la identificación.
‫Entonces MongoDB se llama _id.
‫Y, por supuesto, podríamos consultar ese campo, ¿verdad?
‫Hicimos exactamente eso en la última sección.
‫Entonces especificamos este objeto de filtro aquí, y
‫luego la propiedad que estamos buscando,
‫y luego el valor que queremos buscar.
‫Exactamente lo mismo de nuevo, como hicimos en la última sección.
‫Y este método
‫findOne aquí solo devolverá uno de los documentos.
‫Ahora bien, este findById, como mencioné
‫antes, es simplemente una forma abreviada de tener que escribir esto.
‫Así que detrás de escena, hará exactamente esto.
‫Pero Mongoose simplemente quiere hacernos la vida más fácil.
‫Y por lo tanto, nos da acceso a
‫un método más sencillo
‫llamado findById, que simplemente espera la identificación que estamos buscando.
‫¿Está bien?
‫Permítanme dejar eso aquí, solo como referencia.
‫Y ahora, esto ya funcionaría.
‫Entonces, echemos un vistazo a eso.
‫Así que ya pusimos el ID de esta gira.
‫Creo que fue este Park Camper.
‫Entonces ac2.
‫Y ac2, ese debería ser The Park Camper, y
‫de hecho lo es.
‫Excelente.
‫Y esa es la forma más sencilla de buscar
‫o consultar documentos de la base de datos.
‫Hay mucho más que podemos hacer con las consultas, y haremos todo
‫eso una vez
‫que comencemos a implementar algo como filtrado, ordenación o
‫paginación, y todas esas cosas buenas un
‫poco más adelante en esta sección, así que en un par
‫de videos a partir de ahora.
‫Sin embargo,
‫en este punto, basta con devolver todos los documentos aquí en este
‫controlador de ruta.
‫Y luego aquí, simplemente el de la identificación correspondiente.
‫Y eso
‫funciona ahora, así que pasemos al siguiente.