﻿1
00:00:01,220 --> 00:00:02,890
‫Instructor: Ahora manejemos el

2
00:00:02,890 --> 00:00:06,140
‫error que ocurre cuando intentamos crear campos duplicados

3
00:00:06,140 --> 00:00:09,633
‫para campos que en realidad se supone que son únicos.

4
00:00:11,110 --> 00:00:12,210
‫Y recuerde que

5
00:00:12,210 --> 00:00:13,940
‫este es el tipo de error

6
00:00:13,940 --> 00:00:14,900
‫que obtenemos.

7
00:00:14,900 --> 00:00:16,673
‫Entonces, intentamos crear un nuevo

8
00:00:16,673 --> 00:00:19,000
‫recorrido con un nombre que ya existe

9
00:00:19,000 --> 00:00:21,550
‫y se supone que los campos de nombre

10
00:00:21,550 --> 00:00:23,670
‫son únicos y obtenemos este error.

11
00:00:23,670 --> 00:00:25,250
‫Ahora bien, este error aquí

12
00:00:25,250 --> 00:00:27,210
‫no tiene una propiedad de nombre, ¿de acuerdo?

13
00:00:27,210 --> 00:00:29,071
‫Y eso se debe a que, como

14
00:00:29,071 --> 00:00:30,910
‫mencioné antes, en realidad no es un

15
00:00:30,910 --> 00:00:32,720
‫error causado por una Mongoose.

16
00:00:32,720 --> 00:00:35,000
‫Pero en cambio, en realidad,

17
00:00:35,000 --> 00:00:37,830
‫por el controlador MongoDB subyacente, ¿de acuerdo?

18
00:00:37,830 --> 00:00:39,140
‫Entonces, lo

19
00:00:39,140 --> 00:00:40,734
‫que vamos a hacer

20
00:00:40,734 --> 00:00:45,580
‫para identificar este error es usar este código de 11,000 aquí.

21
00:00:45,580 --> 00:00:46,413
‫¿Está bien?

22
00:00:47,970 --> 00:00:51,263
‫Entonces, tenemos un controlador para CastError.

23
00:00:51,263 --> 00:00:54,190
‫Creemos ahora uno para el caso de que tengamos

24
00:00:54,190 --> 00:00:55,823
‫ese error. código,. código igual a 11.000.

25
00:00:56,837 --> 00:01:00,673
‫Entonces, en ese caso, todos los errores deberían ser iguales a

26
00:01:01,640 --> 00:01:04,138
‫los retornos de error de handleDuplicateFields y

27
00:01:04,138 --> 00:01:08,833
‫nuevamente, estoy agregando DB aquí solo para que sepamos que esto tiene que ver

28
00:01:10,610 --> 00:01:12,610
‫con nuestra base de datos.

29
00:01:12,610 --> 00:01:15,983
‫¿Está bien?

30
00:01:16,940 --> 00:01:18,160
‫Y, entonces, ahora creemos esta función.

31
00:01:18,160 --> 00:01:22,383
‫Y ahora, el mensaje que vamos a enviar

32
00:01:29,470 --> 00:01:32,900
‫es este, así que creémoslo aquí.

33
00:01:34,900 --> 00:01:37,470
‫Y entonces quiero que diga, valor de campo duplicado,

34
00:01:37,470 --> 00:01:38,993
‫y luego escuche el

35
00:01:43,220 --> 00:01:46,090
‫nombre de ese valor, así que pongámoslo ax por ahora.

36
00:01:46,090 --> 00:01:49,503
‫Generaremos eso un poco más tarde.

37
00:01:50,760 --> 00:01:53,160
‫Por lo tanto, utilice otro valor.

38
00:01:53,160 --> 00:01:57,113
‫¿Está bien?

39
00:01:58,170 --> 00:01:59,030
‫Y así, en el

40
00:01:59,030 --> 00:02:01,120
‫caso que acabamos de ver, esta x aquí debería llamarse Forest Hiker.

41
00:02:01,120 --> 00:02:04,093
‫Básicamente, lo que estamos tratando de sacar

42
00:02:05,730 --> 00:02:07,410
‫de esta cadena

43
00:02:07,410 --> 00:02:11,090
‫de mensaje de error es esto, "The Forest Hiker. "Ese es el valor duplicado que queremos

44
00:02:11,090 --> 00:02:13,577
‫enviar al

45
00:02:14,569 --> 00:02:16,280
‫cliente para que

46
00:02:16,280 --> 00:02:18,040
‫ahora pueda corregirlo

47
00:02:18,040 --> 00:02:20,100
‫y crear otro nombre.

48
00:02:20,100 --> 00:02:22,040
‫Entonces, ¿cómo podemos realmente extraer este

49
00:02:22,040 --> 00:02:23,595
‫trozo de cuerda aquí?

50
00:02:23,595 --> 00:02:26,120
‫Bueno, usaremos una expresión regular para, básicamente,

51
00:02:26,120 --> 00:02:28,520
‫como acabo de decir, encontrar el

52
00:02:28,520 --> 00:02:30,640
‫texto que está entre comillas.

53
00:02:30,640 --> 00:02:33,170
‫Porque aquí en esta cadena, todo lo que

54
00:02:33,170 --> 00:02:35,520
‫tenemos realmente para identificar este texto aquí, así

55
00:02:35,520 --> 00:02:37,670
‫que para encontrarlo, son estas citas.

56
00:02:37,670 --> 00:02:40,460
‫¿Está bien?

57
00:02:40,460 --> 00:02:41,293
‫Y ahora, como

58
00:02:41,293 --> 00:02:43,010
‫ya sabe, las expresiones regulares pueden ser realmente difíciles.

59
00:02:43,010 --> 00:02:45,670
‫Por eso, por lo general, solo los busco en Google

60
00:02:45,670 --> 00:02:47,840
‫y déjame mostrarte cómo lo hago en realidad.

61
00:02:47,840 --> 00:02:50,273
‫En este caso, simplemente buscaría texto de coincidencia

62
00:02:53,280 --> 00:02:55,250
‫de expresión regular entre comillas.

63
00:02:55,250 --> 00:03:00,250
‫Y luego, por lo general, es correcto el primer resultado.

64
00:03:05,620 --> 00:03:08,660
‫Y luego aquí tenemos el resultado y podemos

65
00:03:08,660 --> 00:03:11,250
‫usar simplemente esta expresión regular.

66
00:03:11,250 --> 00:03:14,698
‫Ahora veo que tenemos aquí abajo esto aquí.

67
00:03:14,698 --> 00:03:17,150
‫Esto también funciona y es más fácil de leer.

68
00:03:17,150 --> 00:03:19,270
‫Y tiene un montón de votos positivos, por

69
00:03:19,270 --> 00:03:21,100
‫lo que simplemente podemos usar este.

70
00:03:21,100 --> 00:03:23,280
‫Así que eso también debería funcionar.

71
00:03:23,280 --> 00:03:25,290
‫Copiémoslo y volvamos a

72
00:03:25,290 --> 00:03:29,870
‫nuestro código y digamos que nuestro valor, por lo que el

73
00:03:29,870 --> 00:03:32,493
‫valor constante es igual al error. ermsg, recuerde que ese era el nombre

74
00:03:34,440 --> 00:03:37,663
‫de la propiedad.

75
00:03:40,990 --> 00:03:45,990
‫Entonces, errmsg. Nuevamente, eso se debe a que este es un error creado por Mongo

76
00:03:46,000 --> 00:03:48,820
‫y, por lo

77
00:03:48,820 --> 00:03:51,010
‫tanto, estos son nombres ligeramente diferentes.

78
00:03:51,010 --> 00:03:53,383
‫¿Okey?

79
00:03:54,410 --> 00:03:55,243
‫Tenemos esta

80
00:03:55,243 --> 00:03:57,890
‫cadena y ahora queremos hacer coincidir nuestra expresión regular.

81
00:03:57,890 --> 00:03:59,973
‫Entonces, haga coincidir, y luego en JavaScript,

82
00:04:02,140 --> 00:04:04,260
‫una expresión regular siempre está entre dos barras.

83
00:04:04,260 --> 00:04:07,623
‫Luego péguelo aquí lo que acabamos de

84
00:04:08,530 --> 00:04:12,220
‫obtener de Stack Overflow y echemos un vistazo.

85
00:04:14,450 --> 00:04:16,000
‫Entonces, ya estamos en producción.

86
00:04:22,260 --> 00:04:24,600
‫En este momento no enviaremos ninguna respuesta.

87
00:04:24,600 --> 00:04:27,340
‫Todo lo que quiero hacer ahora es analizar el valor.

88
00:04:27,340 --> 00:04:30,203
‫Entonces, si envío esto ahora, obtendremos esta respuesta extraña aquí.

89
00:04:31,870 --> 00:04:36,870
‫Y nuevamente, eso es porque no estamos enviando ningún error.

90
00:04:37,870 --> 00:04:40,910
‫Pero por ahora solo estaba interesado en el valor.

91
00:04:40,910 --> 00:04:44,213
‫Y entonces esto, lo que vemos aquí en el registro ahora

92
00:04:45,540 --> 00:04:46,660
‫es ese valor.

93
00:04:46,660 --> 00:04:48,980
‫Y en realidad es una matriz.

94
00:04:48,980 --> 00:04:51,163
‫Pero lo que nos interesa es en realidad esta cadena aquí.

95
00:04:52,030 --> 00:04:55,830
‫Entonces, en realidad, coincidió con todo el texto que

96
00:04:55,830 --> 00:04:58,550
‫estaba entre cadenas y, por lo tanto,

97
00:04:58,550 --> 00:05:00,670
‫podemos decir que funcionó.

98
00:05:00,670 --> 00:05:01,970
‫Entonces nuestra expresión regular funcionó.

99
00:05:03,680 --> 00:05:06,720
‫Ahora, todo lo que tenemos que decir es que queremos el

100
00:05:06,720 --> 00:05:08,370
‫primer elemento de esa matriz.

101
00:05:08,370 --> 00:05:10,970
‫Entonces, elemento cero.

102
00:05:10,970 --> 00:05:12,960
‫Y ahora, vayamos realmente y

103
00:05:12,960 --> 00:05:16,280
‫regresemos o nuevo AppError, entonces nuevo AppError, pegue

104
00:05:16,280 --> 00:05:20,590
‫el mensaje y nuevamente el código de estado 400 para

105
00:05:20,590 --> 00:05:22,560
‫una solicitud incorrecta.

106
00:05:22,560 --> 00:05:25,993
‫Y ahora intentémoslo de nuevo.

107
00:05:27,999 --> 00:05:29,570
‫Nuevamente, todavía estamos ejecutando una producción

108
00:05:29,570 --> 00:05:31,820
‫y, por lo tanto, ese código debería ejecutarse ahora.

109
00:05:31,820 --> 00:05:34,550
‫Y, por supuesto, intentamos reemplazar nuestra x.

110
00:05:34,550 --> 00:05:37,423
‫Por supuesto, ahora queremos nuestro valor aquí.

111
00:05:40,400 --> 00:05:42,613
‫Y así, ahora obtenemos un

112
00:05:46,750 --> 00:05:51,110
‫valor de campo duplicado, "The Forest Hiker. " Perfecto.

113
00:05:51,110 --> 00:05:51,970
‫Y ahora,

114
00:05:51,970 --> 00:05:54,140
‫a continuación, en el siguiente video, manejaremos el

115
00:05:54,140 --> 00:05:57,330
‫último de los tres errores que son los errores de validación.

