‫-: En este video, implementemos la actualización de documentos.
‫Entonces, aquí, en nuestro controlador de recorrido de actualización, comencemos por
‫convertirlo en una función asíncrona.
‫Luego, o intente atrapar el bloque, así que estoy haciendo
‫esto muy rápido ahora, porque ya estamos acostumbrados a esto en
‫este momento.
‫¿Derecha?
‫Entonces, esto entra en el bloque try y
‫luego simplemente obtengo este, aquí, del bloque catch de esta
‫otra función.
‫Está bien, entonces.
‫Aquí vamos.
‫Y ahora, lo que
‫tenemos que hacer aquí al comienzo de
‫este bloque de prueba es básicamente consultar
‫el documento que queremos actualizar y luego actualizarlo, ¿de acuerdo?
‫Y realmente podemos
‫hacer todo eso en un solo comando con mangosta.
‫Y recuerda, de nuevo, que actualizaremos la gira
‫basándonos en una identificación, ¿de acuerdo?
‫Entonces, es una situación similar a esta aquí,
‫donde encontramos por ID.
‫Y ahora, podemos hacer algo muy
‫similar, que es buscar por ID y actualizar.
‫Nuevamente, todo en una sola consulta.
‫Entonces, hagamos una gira.
‫findByID y actualizar.
‫Bien, entonces, ¿qué tenemos que pasar aquí?
‫Bueno, por supuesto, el ID, para que primero encontremos el documento
‫que se va a actualizar.
‫Entonces, al igual que antes, eso es req. params. ID, y
‫luego los datos que realmente queremos cambiar.
‫Y esos datos estarán en el cuerpo, al
‫igual que en la solicitud de publicación.
‫Entonces req. cuerpo, ¿de acuerdo?
‫Y luego, en realidad, como
‫tercer argumento, también podemos parchear algunas opciones, y lo haremos.
‫Y la primera opción que quiero especificar es nueva
‫y establecerla en verdadero.
‫Porque de esta manera, entonces el nuevo documento actualizado
‫es el que se devolverá.
‫Y dado que queremos devolver ese documento
‫actualizado al cliente, siempre queremos
‫que este método devuelva ese nuevo documento, ¿de acuerdo?
‫De esta manera, tiene sentido esperar
‫esta consulta y luego guardarla en una nueva variable.
‫Entonces simplemente llámelo tour
‫aquí, y luego nuevamente, espere el resultado de esta consulta.
‫Entonces, todos estos métodos que hemos estado
‫usando en el recorrido hasta ahora, así que busque por
‫ID y actualice, o, bueno, no cree realmente, pero busque por
‫ID o busque, todos estos devolverán consultas, por lo que son
‫consultas métodos y déjame
‫mostrarte eso en la documentación de mangosta.
‫Entonces, hasta este punto, no hemos echado un vistazo
‫a la documentación hasta ahora.
‫Entonces, hagámoslo rápidamente.
‫Entonces, en el modelo, que en nuestro caso es tour,
‫tenemos todos estos métodos de consulta, ¿verdad?
‫Entonces ves buscar, ves buscar uno, ves buscar por ID, que es
‫solo una forma abreviada de encontrar uno.
‫Luego verá buscar por ID y actualizar, que
‫es el que estamos
‫usando actualmente, y que, de hecho, es solo
‫una forma abreviada de buscar uno y actualizar, donde estamos solicitando una ID,
‫muy similar a lo que Tuviste en la última conferencia, ¿de acuerdo?
‫Y, de hecho, podemos hacer clic en cualquiera de
‫estos, así que hagamos el que estamos
‫usando actualmente, y eso realmente nos llevará a la documentación de
‫la API que nos muestra cómo usar realmente un determinado método.
‫Entonces, ve que pasamos el ID, por
‫lo que el valor, fuera del ID para consultar, pasamos el
‫objeto con los datos que se actualizarán y pasamos un objeto de opciones.
‫Y aquí abajo podemos ver
‫las opciones que podemos establecer,
‫así que recuerde, simplemente establecemos nuevo en verdadero y,
‫como dice aquí, devolverá el documento modificado en
‫lugar del original.
‫Ahora, otro que realmente queremos establecer en
‫verdadero es esta ejecución de validadores, de modo que cada vez
‫que actualicemos un determinado documento, los validadores que especificamos
‫en el esquema se ejecutarán nuevamente, ¿de acuerdo?
‫Y hablaremos mucho sobre validadores y validación un poco
‫más adelante en la
‫sección, pero lo dejaré aquí por ahora para que, básicamente, no
‫lo olvidemos.
‫¿Okey?
‫Guárdalo ahora, y en realidad quiero volver aquí
‫solo para mostrarte cuántos
‫métodos tenemos en la mangosta.
‫Entonces, en el modelo, tenemos todos estos métodos aquí que
‫ven en esta lista.
‫Entonces, por ejemplo, usamos create antes,
‫también usamos find.
‫¿Okey?
‫Entonces, los que ven aquí en la parte superior,
‫están disponibles directamente en el modelo, y ese,
‫en nuestro caso, es el tour.
‫Ahora, aquí abajo, por ejemplo, también
‫ve el modelo. prototipo. seguro por ejemplo.
‫Y este, en realidad, también
‫lo usamos justo cuando comenzamos a trabajar con mangostas.
‫Así que no estoy seguro de si está familiarizado con esto,
‫pero en el modelo de script java. prototipo siempre significa un
‫objeto creado a partir de una clase, o en este caso,
‫creado a partir de un modelo.
‫Y entonces, el método de guardar aquí, se refiere a un método
‫de guardar llamado en un documento y no en un recorrido.
‫Y recuerda que eso es exactamente lo que hicimos.
‫Y creo que todavía lo tengo aquí como comentario.
‫Sí, aquí mismo.
‫Entonces, tuvimos un recorrido, esta nueva variable de recorrido aquí que
‫se creó a partir del modelo de
‫recorrido, por lo que este nuevo recorrido aquí obtuvo acceso al método de
‫guardado porque es parte del objeto prototipo de esta clase.
‫Muy bien, ahora no quiero aburrirlos con los
‫fundamentos del script java, pero es
‫importante para entender la documentación, ¿de acuerdo?
‫Porque en algún momento necesitarás usar documentación,
‫porque mangosta es yute.
‫Y de hecho, te enseñaré muchas de las
‫cosas que son importantes a lo largo de todo este
‫curso, pero a veces aún necesitarás algo que no te
‫mostré en este curso.
‫Por eso, es importante que
‫también comprenda realmente la documentación, ¿de acuerdo?
‫Y así, de nuevo, cuando veas model. prototipo aquí, sabe
‫que el método de guardado aquí
‫estará disponible en todas las instancias creadas a
‫través de un modelo, ¿de acuerdo?
‫Y entonces, no el modelo en sí.
‫Entonces, por ejemplo, si probaste tour. salvo que
‫no podría utilizarlo.
‫Le daría un error, pero en cambio, si intenta guardar
‫en un documento creado a través del recorrido,
‫entonces, por supuesto, funcionará, ¿de acuerdo?
‫Espero que tenga sentido.
‫Y, de todos modos, ves que tenemos
‫muchas otras cosas, así que tenemos que consultar, de lo
‫que ya hablamos, porque, por ejemplo, buscar por ID y actualizar,
‫o buscar, o buscar por ID, todos estos devolver objetos de consulta.
‫Entonces, más adelante, cuando implementemos
‫cosas como ordenar o filtrar, usaremos este objeto de consulta.
‫¿Okey?
‫Entonces, regresemos, nos salimos del camino aquí al mirar la documentación,
‫pero, nuevamente, creo que es realmente importante
‫comenzar a mirar la
‫documentación, porque un curso como este
‫solo puede llevarte hasta cierto punto, y yo Espero que
‫ya lo sepas en este momento, ¿de acuerdo?
‫Es muy importante que también puedas encontrar información por
‫tu cuenta, y quiero mostrarte cómo hacerlo
‫también en este curso.
‫De todos modos, enviemos ahora también este
‫tour recién actualizado al cliente, lo que, en
‫este momento, no estamos haciendo, porque
‫simplemente tenemos esta cadena de tour actualizada aquí.
‫Así que deshagámonos de eso y simplemente enviemos a la gira.
‫Y recuerde que esto, de hecho, es en realidad esto.
‫Entonces, la propiedad tour se establece en el objeto tour, pero, gracias
‫a ES6, ya no tenemos que hacerlo cuando el
‫nombre de la propiedad tiene el mismo nombre que el valor.
‫Bien, deshagámonos de eso.
‫Eso hace que nuestro código se vea un poco mejor.
‫Bien, y ahora probémoslo.
‫Volviendo al cartero, aquí tenemos la ruta del tour actualizada.
‫Entonces, hagámoslo con
‫esta misma identificación que usamos antes.
‫Entonces, este.
‫Luego llegamos al cuerpo, aquí, y cambiemos ...
‫Bueno, ¿qué vamos a cambiar aquí?
‫Bueno, cambiemos el precio a 500.
‫Entonces, precio, 500, envíalo, y de hecho
‫esto nos da el objeto recién
‫actualizado con el precio ya
‫establecido en 500.
‫Y si ahora obtenemos todos los recorridos, entonces eso,
‫por supuesto, debería reflejarse aquí.
‫Y aquí está.
‫Pero ahora, digamos que lo configuramos como una cadena.
‫Entonces, echemos un vistazo a lo que sucede.
‫Bueno, entonces obtenemos un error.
‫Y eso es porque volvimos a ejecutar los validadores.
‫Entonces, recuerda que tenemos ... ¿Dónde
‫está eso?
‫Oh si, aqui.
‫Entonces aquí especificamos que los validadores deben ejecutarse nuevamente.
‫Entonces, ahora mismo el precio ya no es un número
‫como se esperaba, ¿verdad?
‫Entonces, en un esquema, decimos que el precio debe ser un
‫número, pero, por supuesto, el script java o
‫la mangosta, en realidad, no pueden, básicamente, convertir esta cadena aquí en un número.
‫Pero eso es lo que esperamos.
‫Entonces aquí dice que el tipo debe ser número.
‫Y entonces, por lo tanto, nos
‫da un error, simplemente porque estamos ejecutando los validadores nuevamente.
‫Regresemos a 500 y luego, por
‫supuesto, volverá.
‫Muy bien, ahora, tenga en cuenta que en realidad
‫estamos haciendo una solicitud de parche aquí.
‫Ahora, si estuviéramos haciendo una solicitud de colocación, recuerde,
‫entonces esperaría que el objeto original se
‫reemplazara por completo
‫con el nuevo que se envió, ¿de acuerdo?
‫Entonces, en ese caso, ya no
‫funcionaría de la forma
‫en que lo implementamos aquí porque este simplemente actualizó
‫los campos que son diferentes aquí en el cuerpo, ¿de acuerdo?
‫Pero de todos modos, creo que el método
‫de parche es en realidad mucho
‫más útil, por lo que será el único que se implemente aquí.
‫Genial, tenemos tres de nuestras cuatro operaciones correctas
‫implementadas, solo queda una más, que
‫será eliminada.