‫Instructor: Ahora manejemos el
‫error que ocurre cuando intentamos crear campos duplicados
‫para campos que en realidad se supone que son únicos.
‫Y recuerde que
‫este es el tipo de error
‫que obtenemos.
‫Entonces, intentamos crear un nuevo
‫recorrido con un nombre que ya existe
‫y se supone que los campos de nombre
‫son únicos y obtenemos este error.
‫Ahora bien, este error aquí
‫no tiene una propiedad de nombre, ¿de acuerdo?
‫Y eso se debe a que, como
‫mencioné antes, en realidad no es un
‫error causado por una Mongoose.
‫Pero en cambio, en realidad,
‫por el controlador MongoDB subyacente, ¿de acuerdo?
‫Entonces, lo
‫que vamos a hacer
‫para identificar este error es usar este código de 11,000 aquí.
‫¿Está bien?
‫Entonces, tenemos un controlador para CastError.
‫Creemos ahora uno para el caso de que tengamos
‫ese error. código,. código igual a 11.000.
‫Entonces, en ese caso, todos los errores deberían ser iguales a
‫los retornos de error de handleDuplicateFields y
‫nuevamente, estoy agregando DB aquí solo para que sepamos que esto tiene que ver
‫con nuestra base de datos.
‫¿Está bien?
‫Y, entonces, ahora creemos esta función.
‫Y ahora, el mensaje que vamos a enviar
‫es este, así que creémoslo aquí.
‫Y entonces quiero que diga, valor de campo duplicado,
‫y luego escuche el
‫nombre de ese valor, así que pongámoslo ax por ahora.
‫Generaremos eso un poco más tarde.
‫Por lo tanto, utilice otro valor.
‫¿Está bien?
‫Y así, en el
‫caso que acabamos de ver, esta x aquí debería llamarse Forest Hiker.
‫Básicamente, lo que estamos tratando de sacar
‫de esta cadena
‫de mensaje de error es esto, "The Forest Hiker. "Ese es el valor duplicado que queremos
‫enviar al
‫cliente para que
‫ahora pueda corregirlo
‫y crear otro nombre.
‫Entonces, ¿cómo podemos realmente extraer este
‫trozo de cuerda aquí?
‫Bueno, usaremos una expresión regular para, básicamente,
‫como acabo de decir, encontrar el
‫texto que está entre comillas.
‫Porque aquí en esta cadena, todo lo que
‫tenemos realmente para identificar este texto aquí, así
‫que para encontrarlo, son estas citas.
‫¿Está bien?
‫Y ahora, como
‫ya sabe, las expresiones regulares pueden ser realmente difíciles.
‫Por eso, por lo general, solo los busco en Google
‫y déjame mostrarte cómo lo hago en realidad.
‫En este caso, simplemente buscaría texto de coincidencia
‫de expresión regular entre comillas.
‫Y luego, por lo general, es correcto el primer resultado.
‫Y luego aquí tenemos el resultado y podemos
‫usar simplemente esta expresión regular.
‫Ahora veo que tenemos aquí abajo esto aquí.
‫Esto también funciona y es más fácil de leer.
‫Y tiene un montón de votos positivos, por
‫lo que simplemente podemos usar este.
‫Así que eso también debería funcionar.
‫Copiémoslo y volvamos a
‫nuestro código y digamos que nuestro valor, por lo que el
‫valor constante es igual al error. ermsg, recuerde que ese era el nombre
‫de la propiedad.
‫Entonces, errmsg. Nuevamente, eso se debe a que este es un error creado por Mongo
‫y, por lo
‫tanto, estos son nombres ligeramente diferentes.
‫¿Okey?
‫Tenemos esta
‫cadena y ahora queremos hacer coincidir nuestra expresión regular.
‫Entonces, haga coincidir, y luego en JavaScript,
‫una expresión regular siempre está entre dos barras.
‫Luego péguelo aquí lo que acabamos de
‫obtener de Stack Overflow y echemos un vistazo.
‫Entonces, ya estamos en producción.
‫En este momento no enviaremos ninguna respuesta.
‫Todo lo que quiero hacer ahora es analizar el valor.
‫Entonces, si envío esto ahora, obtendremos esta respuesta extraña aquí.
‫Y nuevamente, eso es porque no estamos enviando ningún error.
‫Pero por ahora solo estaba interesado en el valor.
‫Y entonces esto, lo que vemos aquí en el registro ahora
‫es ese valor.
‫Y en realidad es una matriz.
‫Pero lo que nos interesa es en realidad esta cadena aquí.
‫Entonces, en realidad, coincidió con todo el texto que
‫estaba entre cadenas y, por lo tanto,
‫podemos decir que funcionó.
‫Entonces nuestra expresión regular funcionó.
‫Ahora, todo lo que tenemos que decir es que queremos el
‫primer elemento de esa matriz.
‫Entonces, elemento cero.
‫Y ahora, vayamos realmente y
‫regresemos o nuevo AppError, entonces nuevo AppError, pegue
‫el mensaje y nuevamente el código de estado 400 para
‫una solicitud incorrecta.
‫Y ahora intentémoslo de nuevo.
‫Nuevamente, todavía estamos ejecutando una producción
‫y, por lo tanto, ese código debería ejecutarse ahora.
‫Y, por supuesto, intentamos reemplazar nuestra x.
‫Por supuesto, ahora queremos nuestro valor aquí.
‫Y así, ahora obtenemos un
‫valor de campo duplicado, "The Forest Hiker. " Perfecto.
‫Y ahora,
‫a continuación, en el siguiente video, manejaremos el
‫último de los tres errores que son los errores de validación.