﻿1
00:00:01,220 --> 00:00:02,890
‫Instrutor: Agora vamos

2
00:00:02,890 --> 00:00:06,140
‫lidar com o erro que ocorre quando tentamos

3
00:00:06,140 --> 00:00:09,633
‫criar campos duplicados para campos que deveriam ser únicos.

4
00:00:11,110 --> 00:00:12,210
‫E então, lembre-se de

5
00:00:12,210 --> 00:00:13,940
‫que esse é o tipo de

6
00:00:13,940 --> 00:00:14,900
‫erro que recebemos.

7
00:00:14,900 --> 00:00:16,673
‫Então, tentamos criar um

8
00:00:16,673 --> 00:00:19,000
‫novo passeio com um nome que já

9
00:00:19,000 --> 00:00:21,550
‫existe e os campos de nome deveriam

10
00:00:21,550 --> 00:00:23,670
‫ser únicos e obtemos este erro.

11
00:00:23,670 --> 00:00:25,250
‫Agora, este erro aqui

12
00:00:25,250 --> 00:00:27,210
‫não tem uma propriedade de nome, ok?

13
00:00:27,210 --> 00:00:29,071
‫E isso porque, como mencionei antes,

14
00:00:29,071 --> 00:00:30,910
‫na verdade não é um erro

15
00:00:30,910 --> 00:00:32,720
‫causado por um Mongoose.

16
00:00:32,720 --> 00:00:35,000
‫Mas em vez disso,

17
00:00:35,000 --> 00:00:37,830
‫realmente, pelo driver MongoDB subjacente, certo?

18
00:00:37,830 --> 00:00:39,140
‫E então,

19
00:00:39,140 --> 00:00:40,734
‫o que vamos

20
00:00:40,734 --> 00:00:45,580
‫fazer para identificar esse erro é usar este código 11.000 aqui.

21
00:00:45,580 --> 00:00:46,413
‫Tudo bem?

22
00:00:47,970 --> 00:00:51,263
‫Portanto, temos um manipulador para o CastError.

23
00:00:51,263 --> 00:00:54,190
‫Vamos agora criar um para o caso em que temos

24
00:00:54,190 --> 00:00:55,823
‫esse erro. código,. código igual a 11.000.

25
00:00:56,837 --> 00:01:00,673
‫Nesse caso, todos os erros devem ser iguais aos retornos

26
00:01:01,640 --> 00:01:04,138
‫de erro de handleDuplicateFields e, novamente, estou

27
00:01:04,138 --> 00:01:08,833
‫adicionando DB aqui apenas para sabermos que isso tem a ver com

28
00:01:10,610 --> 00:01:12,610
‫nosso banco de dados.

29
00:01:12,610 --> 00:01:15,983
‫Tudo bem?

30
00:01:16,940 --> 00:01:18,160
‫E, então, vamos agora criar essa função.

31
00:01:18,160 --> 00:01:22,383
‫E agora, a mensagem que enviaremos é

32
00:01:29,470 --> 00:01:32,900
‫esta, então vamos criá-la aqui.

33
00:01:34,900 --> 00:01:37,470
‫E então eu quero dizer, valor do campo duplicado,

34
00:01:37,470 --> 00:01:38,993
‫e então ouvir o nome

35
00:01:43,220 --> 00:01:46,090
‫desse valor, então vamos colocar isso em x por enquanto.

36
00:01:46,090 --> 00:01:49,503
‫Geraremos isso um pouco mais tarde.

37
00:01:50,760 --> 00:01:53,160
‫Portanto, use outro valor.

38
00:01:53,160 --> 00:01:57,113
‫Tudo bem?

39
00:01:58,170 --> 00:01:59,030
‫E então, no caso que

40
00:01:59,030 --> 00:02:01,120
‫acabamos de ver, este x aqui deve ser chamado de Caminhante da Floresta.

41
00:02:01,120 --> 00:02:04,093
‫Basicamente, o que estamos tentando extrair

42
00:02:05,730 --> 00:02:07,410
‫dessa string

43
00:02:07,410 --> 00:02:11,090
‫de mensagem de erro é "The Forest Hiker. “Então esse é o valor duplicado que queremos

44
00:02:11,090 --> 00:02:13,577
‫enviar ao

45
00:02:14,569 --> 00:02:16,280
‫cliente para que

46
00:02:16,280 --> 00:02:18,040
‫ele possa corrigi-lo

47
00:02:18,040 --> 00:02:20,100
‫e criar outro nome.

48
00:02:20,100 --> 00:02:22,040
‫Então, como podemos realmente extrair esse

49
00:02:22,040 --> 00:02:23,595
‫pedaço da corda aqui?

50
00:02:23,595 --> 00:02:26,120
‫Bem, vamos usar uma expressão regular para,

51
00:02:26,120 --> 00:02:28,520
‫basicamente, como acabei de dizer, encontrar o

52
00:02:28,520 --> 00:02:30,640
‫texto que está entre aspas.

53
00:02:30,640 --> 00:02:33,170
‫Porque aqui nesta string, tudo o que

54
00:02:33,170 --> 00:02:35,520
‫realmente temos para identificar este texto aqui,

55
00:02:35,520 --> 00:02:37,670
‫para encontrá-lo, são essas aspas.

56
00:02:37,670 --> 00:02:40,460
‫Tudo bem?

57
00:02:40,460 --> 00:02:41,293
‫E agora, como você

58
00:02:41,293 --> 00:02:43,010
‫já sabe, as expressões regulares podem ser muito difíceis.

59
00:02:43,010 --> 00:02:45,670
‫Normalmente, eu apenas os procuro no Google e deixe-me

60
00:02:45,670 --> 00:02:47,840
‫mostrar como eu realmente faço isso.

61
00:02:47,840 --> 00:02:50,273
‫Nesse caso, eu simplesmente pesquisaria o texto de

62
00:02:53,280 --> 00:02:55,250
‫correspondência de expressão regular entre aspas.

63
00:02:55,250 --> 00:03:00,250
‫E então geralmente é o primeiro resultado certo.

64
00:03:05,620 --> 00:03:08,660
‫E aqui embaixo temos o resultado e, portanto,

65
00:03:08,660 --> 00:03:11,250
‫podemos usar simplesmente esta expressão regular.

66
00:03:11,250 --> 00:03:14,698
‫Agora vejo que temos aqui embaixo isso aqui.

67
00:03:14,698 --> 00:03:17,150
‫Isso também funciona e é mais fácil de ler.

68
00:03:17,150 --> 00:03:19,270
‫E tem muitos votos positivos, então

69
00:03:19,270 --> 00:03:21,100
‫podemos simplesmente usar este aqui.

70
00:03:21,100 --> 00:03:23,280
‫Então isso também deve funcionar.

71
00:03:23,280 --> 00:03:25,290
‫Então, vamos copiá-lo e

72
00:03:25,290 --> 00:03:29,870
‫voltar ao nosso código, e dizer que nosso valor, então o

73
00:03:29,870 --> 00:03:32,493
‫valor const é igual ao erro. ermsg, então lembre-se de que esse era

74
00:03:34,440 --> 00:03:37,663
‫o nome da propriedade.

75
00:03:40,990 --> 00:03:45,990
‫Então, errmsg. Novamente, isso é porque este é um erro criado pelo Mongo

76
00:03:46,000 --> 00:03:48,820
‫e, portanto,

77
00:03:48,820 --> 00:03:51,010
‫esses nomes são ligeiramente diferentes.

78
00:03:51,010 --> 00:03:53,383
‫OK?

79
00:03:54,410 --> 00:03:55,243
‫Portanto, temos

80
00:03:55,243 --> 00:03:57,890
‫essa string e agora queremos corresponder à nossa expressão regular.

81
00:03:57,890 --> 00:03:59,973
‫Portanto, combine e, em JavaScript, uma

82
00:04:02,140 --> 00:04:04,260
‫expressão regular está sempre entre duas barras.

83
00:04:04,260 --> 00:04:07,623
‫Em seguida, cole aqui o que acabamos de

84
00:04:08,530 --> 00:04:12,220
‫obter do Stack Overflow e vamos dar uma olhada.

85
00:04:14,450 --> 00:04:16,000
‫Portanto, já estamos em produção.

86
00:04:22,260 --> 00:04:24,600
‫No momento, não enviaremos nenhuma resposta.

87
00:04:24,600 --> 00:04:27,340
‫Tudo o que quero fazer agora é dar uma olhada no valor.

88
00:04:27,340 --> 00:04:30,203
‫Então, se eu enviei isso agora, teremos uma resposta estranha aqui.

89
00:04:31,870 --> 00:04:36,870
‫E novamente, isso é porque não estamos enviando nenhum erro.

90
00:04:37,870 --> 00:04:40,910
‫Mas, por enquanto, eu estava realmente interessado apenas no valor.

91
00:04:40,910 --> 00:04:44,213
‫E então isso, o que vemos aqui no log agora

92
00:04:45,540 --> 00:04:46,660
‫é esse valor.

93
00:04:46,660 --> 00:04:48,980
‫E, na verdade, é uma matriz.

94
00:04:48,980 --> 00:04:51,163
‫Mas o que nos interessa é, na verdade, esta string aqui.

95
00:04:52,030 --> 00:04:55,830
‫Então, ele realmente correspondeu a todo o texto que

96
00:04:55,830 --> 00:04:58,550
‫estava entre as strings e, portanto,

97
00:04:58,550 --> 00:05:00,670
‫podemos dizer que funcionou.

98
00:05:00,670 --> 00:05:01,970
‫Portanto, nossa expressão regular funcionou.

99
00:05:03,680 --> 00:05:06,720
‫Agora, tudo o que temos a dizer é que queremos

100
00:05:06,720 --> 00:05:08,370
‫o primeiro elemento desse array.

101
00:05:08,370 --> 00:05:10,970
‫Então, elemento zero.

102
00:05:10,970 --> 00:05:12,960
‫E agora, vamos realmente prosseguir

103
00:05:12,960 --> 00:05:16,280
‫e retornar ou new AppError, então new AppError,

104
00:05:16,280 --> 00:05:20,590
‫cole a mensagem e novamente o código de status 400 para

105
00:05:20,590 --> 00:05:22,560
‫uma solicitação incorreta.

106
00:05:22,560 --> 00:05:25,993
‫E agora vamos tentar novamente.

107
00:05:27,999 --> 00:05:29,570
‫Novamente, ainda estamos executando uma

108
00:05:29,570 --> 00:05:31,820
‫produção e, portanto, esse código deve ser executado agora.

109
00:05:31,820 --> 00:05:34,550
‫E, claro, tentamos substituir nosso x.

110
00:05:34,550 --> 00:05:37,423
‫Claro, agora queremos nosso valor aqui.

111
00:05:40,400 --> 00:05:42,613
‫E então, agora temos um

112
00:05:46,750 --> 00:05:51,110
‫valor de campo duplicado, "The Forest Hiker. " Perfeito.

113
00:05:51,110 --> 00:05:51,970
‫E agora,

114
00:05:51,970 --> 00:05:54,140
‫a seguir, no próximo vídeo, lidaremos com

115
00:05:54,140 --> 00:05:57,330
‫o último dos três erros que são os erros de validação.

