﻿1
00:00:01,010 --> 00:00:02,650
‫Istruttore maschio: Infine, gestiamo

2
00:00:02,650 --> 00:00:05,053
‫ora gli errori di convalida di Mongoose.

3
00:00:06,630 --> 00:00:09,750
‫Quindi ricordi come abbiamo provato ad aggiornare un tour con

4
00:00:09,750 --> 00:00:11,410
‫alcuni dati non validi qui,

5
00:00:11,410 --> 00:00:13,890
‫e poi abbiamo ottenuto questo tipo di errore?

6
00:00:13,890 --> 00:00:15,160
‫Bene.

7
00:00:15,160 --> 00:00:17,923
‫E in realtà proviamo ad aggiungerne un altro.

8
00:00:19,890 --> 00:00:24,350
‫Quindi un nome davvero corto, ok?

9
00:00:24,350 --> 00:00:27,410
‫E perché non è permesso, di nuovo.

10
00:00:27,410 --> 00:00:30,680
‫Oh, e ora in realtà non possiamo più vedere il

11
00:00:30,680 --> 00:00:33,000
‫nostro errore perché ora siamo in produzione.

12
00:00:33,000 --> 00:00:34,750
‫E ovviamente questo errore in questo

13
00:00:34,750 --> 00:00:36,370
‫momento non viene gestito correttamente.

14
00:00:36,370 --> 00:00:38,730
‫Non è contrassegnato come operativo.

15
00:00:38,730 --> 00:00:39,580
‫E

16
00:00:39,580 --> 00:00:44,020
‫quindi, ricorda che riceviamo questo tipo di messaggio di errore generico.

17
00:00:44,020 --> 00:00:45,040
‫Bene?

18
00:00:45,040 --> 00:00:49,530
‫Quindi, solo per vedere l'errore che abbiamo avuto prima,

19
00:00:49,530 --> 00:00:52,263
‫torniamo rapidamente allo sviluppo.

20
00:00:53,810 --> 00:00:55,253
‫Quindi npm inizia.

21
00:00:58,950 --> 00:01:00,610
‫E invialo di

22
00:01:00,610 --> 00:01:01,810
‫nuovo ora.

23
00:01:01,810 --> 00:01:05,220
‫E così ora riprendiamo i nostri errori di sviluppo, ok?

24
00:01:05,220 --> 00:01:06,590
‫Perché ora voglio

25
00:01:06,590 --> 00:01:10,410
‫mostrarti come possiamo effettivamente creare un messaggio di errore significativo

26
00:01:10,410 --> 00:01:13,590
‫basato su tutto questo, quello che abbiamo qui.

27
00:01:13,590 --> 00:01:14,670
‫Ora giusto.

28
00:01:14,670 --> 00:01:16,690
‫Quindi all'interno del nostro

29
00:01:16,690 --> 00:01:19,280
‫errore, otteniamo una proprietà di errore.

30
00:01:19,280 --> 00:01:21,800
‫E quella proprietà stessa è un

31
00:01:21,800 --> 00:01:24,540
‫oggetto che contiene molti oggetti, e ognuno

32
00:01:24,540 --> 00:01:28,770
‫di essi è per uno dei campi che contiene un errore.

33
00:01:28,770 --> 00:01:29,790
‫Tutto ok?

34
00:01:29,790 --> 00:01:33,760
‫Quindi il primo qui è per la durata del tour.

35
00:01:33,760 --> 00:01:35,760
‫Poi la seconda è per la difficoltà,

36
00:01:35,760 --> 00:01:37,310
‫anche quella è sbagliata.

37
00:01:37,310 --> 00:01:40,400
‫E il terzo è per la valutazione, ok?

38
00:01:40,400 --> 00:01:44,520
‫Quindi ognuno di questi ha effettivamente un bel messaggio di errore, ok?

39
00:01:44,520 --> 00:01:48,210
‫Quindi sostanzialmente quello che abbiamo definito nel nostro schema Mongoose.

40
00:01:48,210 --> 00:01:50,480
‫E quindi ora vogliamo estrarre

41
00:01:50,480 --> 00:01:52,490
‫questi tre messaggi da

42
00:01:52,490 --> 00:01:55,920
‫qui e metterli tutti in un'unica stringa, ok?

43
00:01:55,920 --> 00:01:58,593
‫Quindi andiamo avanti e facciamolo.

44
00:01:59,720 --> 00:02:00,553
‫Bene.

45
00:02:00,553 --> 00:02:01,740
‫E ancora,

46
00:02:01,740 --> 00:02:05,363
‫inizierò creando effettivamente il condizionale qui sotto.

47
00:02:06,720 --> 00:02:07,553
‫Quindi se

48
00:02:09,210 --> 00:02:10,760
‫(errore), e in realtà diamo un'occhiata.

49
00:02:12,270 --> 00:02:14,290
‫Quindi qui abbiamo l'errore.

50
00:02:14,290 --> 00:02:16,413
‫Abbiamo gli errori, tutti.

51
00:02:17,510 --> 00:02:19,840
‫E ho bisogno di scorrere qui.

52
00:02:19,840 --> 00:02:22,320
‫E sì, quindi ecco il nome.

53
00:02:22,320 --> 00:02:26,300
‫Quindi errore. il nome è ValidationError, va bene?

54
00:02:26,300 --> 00:02:27,453
‫Quindi prendiamolo.

55
00:02:32,150 --> 00:02:32,983
‫Bene.

56
00:02:32,983 --> 00:02:36,010
‫E quindi anche questo è un errore creato da Mongoose.

57
00:02:36,010 --> 00:02:37,440
‫Quindi proprio come

58
00:02:37,440 --> 00:02:40,023
‫il primo, e quindi sembrano simili, ok.

59
00:02:41,150 --> 00:02:42,553
‫Ora non voglio questo qui.

60
00:02:43,400 --> 00:02:45,410
‫Ma invece

61
00:02:45,410 --> 00:02:48,863
‫voglio che l'errore sia uguale a

62
00:02:54,290 --> 00:02:57,123
‫handleValidationErrorDB e invii l'errore, ok?

63
00:02:59,400 --> 00:03:00,933
‫Ora copiamo questo di nuovo.

64
00:03:08,560 --> 00:03:09,840
‫Tutto bene.

65
00:03:09,840 --> 00:03:13,723
‫E ricominciamo, iniziamo semplicemente creando il nostro messaggio.

66
00:03:19,090 --> 00:03:20,523
‫Dati di input non validi.

67
00:03:23,060 --> 00:03:25,043
‫E poi restituiamo anche l'errore.

68
00:03:27,520 --> 00:03:29,020
‫Quindi nuovo AppError (messaggio, 400).

69
00:03:30,275 --> 00:03:31,860
‫Quindi VS Code ha

70
00:03:31,860 --> 00:03:35,073
‫già riconosciuto che volevo digitare proprio quello, va bene?

71
00:03:38,130 --> 00:03:40,280
‫Ora, per creare una stringa

72
00:03:40,280 --> 00:03:43,400
‫grande da tutte le stringhe di tutti gli

73
00:03:43,400 --> 00:03:46,330
‫errori, dobbiamo fondamentalmente eseguire il ciclo su tutti

74
00:03:46,330 --> 00:03:51,180
‫questi oggetti e quindi estrarre tutti i messaggi di errore in un nuovo array.

75
00:03:51,180 --> 00:03:53,573
‫Quindi, di nuovo, diamo un'occhiata a questo.

76
00:03:54,440 --> 00:03:55,320
‫Bene.

77
00:03:55,320 --> 00:03:58,430
‫Quindi l'oggetto che contiene tutti gli

78
00:03:58,430 --> 00:04:01,290
‫oggetti contiene errori, ok?

79
00:04:01,290 --> 00:04:03,800
‫Quindi abbiamo un errore per il nome, uno per la

80
00:04:03,800 --> 00:04:05,870
‫difficoltà e uno per la media delle valutazioni.

81
00:04:05,870 --> 00:04:09,923
‫E quindi fondamentalmente eseguiremo il loop su questo oggetto degli errori.

82
00:04:10,810 --> 00:04:11,660
‫Bene?

83
00:04:11,660 --> 00:04:14,190
‫E in JavaScript, usiamo Object. valori per

84
00:04:14,190 --> 00:04:17,290
‫eseguire fondamentalmente il ciclo su un oggetto.

85
00:04:17,290 --> 00:04:19,720
‫Quindi gli elementi di un oggetto.

86
00:04:19,720 --> 00:04:21,260
‫Tutto ok?

87
00:04:21,260 --> 00:04:25,000
‫Quindi creiamo una variabile qui chiamata errori, che sarà di

88
00:04:25,000 --> 00:04:26,700
‫nuovo un array di tutti

89
00:04:26,700 --> 00:04:28,583
‫i messaggi di errore per ora,

90
00:04:29,640 --> 00:04:32,963
‫e ora Object. i valori.

91
00:04:34,930 --> 00:04:38,863
‫E quindi vogliamo i valori di err. errori, va bene?

92
00:04:41,540 --> 00:04:44,580
‫E ora passaci sopra usando una mappa.

93
00:04:44,580 --> 00:04:46,160
‫E poi in

94
00:04:46,160 --> 00:04:50,220
‫ogni iterazione, restituiremo semplicemente il messaggio di errore, ok?

95
00:04:50,220 --> 00:04:54,540
‫Quindi, solo per essere sicuri che siamo tutti sulla

96
00:04:54,540 --> 00:04:59,470
‫stessa pagina qui, l'Oggetto. i valori sono questi oggetti, ok?

97
00:04:59,470 --> 00:05:04,190
‫Quindi questo oggetto, e questo oggetto, e il prossimo, ok?

98
00:05:04,190 --> 00:05:05,730
‫Quindi questi sono i valori.

99
00:05:05,730 --> 00:05:06,930
‫E quindi ora

100
00:05:06,930 --> 00:05:09,110
‫tutto ciò che dobbiamo fare per estrarre

101
00:05:09,110 --> 00:05:12,210
‫il messaggio, è dire valore. messaggio, ok?

102
00:05:12,210 --> 00:05:13,533
‫Così . Messaggio.

103
00:05:16,410 --> 00:05:18,380
‫Quindi fondamentalmente il valore corrente, o

104
00:05:18,380 --> 00:05:19,710
‫diciamo l'elemento corrente,

105
00:05:19,710 --> 00:05:21,653
‫mi piace usare l'elemento per quello

106
00:05:22,640 --> 00:05:25,423
‫e vogliamo restituire el. Messaggio.

107
00:05:26,870 --> 00:05:27,703
‫Bene.

108
00:05:28,940 --> 00:05:32,040
‫E ora, ovviamente, questo non dovrebbe essere qui.

109
00:05:32,040 --> 00:05:34,140
‫E probabilmente lo avevi già notato.

110
00:05:35,260 --> 00:05:39,930
‫Quindi, in effetti, è qui che lo vogliamo, ok?

111
00:05:39,930 --> 00:05:41,280
‫E quindi ora tutto

112
00:05:41,280 --> 00:05:45,163
‫ciò che dobbiamo fare è inserirlo nella nostra stringa di messaggi, ok?

113
00:05:46,830 --> 00:05:51,700
‫Quindi errori, e ora li uniamo semplicemente tutti insieme

114
00:05:51,700 --> 00:05:56,700
‫in un'unica stringa usando il punto e poi lo spazio, ok?

115
00:05:56,930 --> 00:05:59,263
‫E vedrai, in un secondo, perché è così.

116
00:06:00,350 --> 00:06:01,183
‫Tutto bene.

117
00:06:02,590 --> 00:06:05,130
‫Quindi torniamo alla produzione qui.

118
00:06:05,130 --> 00:06:07,483
‫Quindi eseguendo il nostro script di avvio della produzione.

119
00:06:08,960 --> 00:06:12,083
‫Riprova ora e aspettiamo, e

120
00:06:13,440 --> 00:06:14,310
‫bam!

121
00:06:14,310 --> 00:06:15,470
‫Eccoci qui!

122
00:06:15,470 --> 00:06:17,530
‫Quindi dati di input non validi.

123
00:06:17,530 --> 00:06:19,990
‫Quindi la prima stringa di errore, deve avere

124
00:06:19,990 --> 00:06:22,150
‫più o uguale a 10 caratteri.

125
00:06:22,150 --> 00:06:23,810
‫Poi il

126
00:06:23,810 --> 00:06:26,040
‫secondo, e il terzo.

127
00:06:26,040 --> 00:06:26,900
‫Perfetto.

128
00:06:26,900 --> 00:06:30,210
‫Ed è per questo che ho usato il punto e lo spazio, ok?

129
00:06:30,210 --> 00:06:33,680
‫Quindi, per separare sostanzialmente queste tre stringhe con un

130
00:06:33,680 --> 00:06:36,210
‫punto e uno spazio, va bene?

131
00:06:36,210 --> 00:06:38,680
‫E ora questo sembra un messaggio di

132
00:06:38,680 --> 00:06:41,693
‫errore molto ben formattato che tutti possono facilmente capire.

133
00:06:42,870 --> 00:06:43,703
‫Destra?

134
00:06:43,703 --> 00:06:46,180
‫Quindi, abbiamo praticamente finito qui.

135
00:06:46,180 --> 00:06:47,013
‫Tutto bene.

136
00:06:47,013 --> 00:06:49,890
‫Ora avremmo potuto fare questo errore, gestendo

137
00:06:49,890 --> 00:06:52,120
‫l'errore, ancora molto più completo.

138
00:06:52,120 --> 00:06:56,640
‫Ad esempio, potremmo definire diversi livelli di gravità dell'errore come dire, questo

139
00:06:56,640 --> 00:06:59,130
‫errore non è così importante, questo errore

140
00:06:59,130 --> 00:07:01,130
‫è di media importanza

141
00:07:01,130 --> 00:07:04,770
‫e questo errore è molto importante o addirittura critico.

142
00:07:04,770 --> 00:07:08,400
‫E potremmo anche inviare un'e-mail ad alcuni amministratori

143
00:07:08,400 --> 00:07:10,430
‫sugli errori critici.

144
00:07:10,430 --> 00:07:14,120
‫E davvero, ci sono molte cose che potremmo implementare.

145
00:07:14,120 --> 00:07:18,300
‫Ma ancora una volta, in una specie di piccola applicazione come questa,

146
00:07:18,300 --> 00:07:21,810
‫quello che abbiamo qui è già davvero buono, ok?

147
00:07:21,810 --> 00:07:24,410
‫Quindi questa è già una strategia abbastanza

148
00:07:24,410 --> 00:07:25,970
‫solida che abbiamo

149
00:07:25,970 --> 00:07:29,150
‫implementato qui, e ne sono davvero contento, ok?

150
00:07:29,150 --> 00:07:32,520
‫Quindi tutta questa logica qui con gli errori operativi

151
00:07:32,520 --> 00:07:34,200
‫che abbiamo implementato

152
00:07:34,200 --> 00:07:36,393
‫qui, quindi è già abbastanza sofisticata.

153
00:07:37,250 --> 00:07:38,083
‫Bene?

154
00:07:39,290 --> 00:07:42,190
‫Ora, se dovessimo mai trovare un altro errore

155
00:07:42,190 --> 00:07:44,420
‫che vogliamo contrassegnare come operativo, ovviamente

156
00:07:44,420 --> 00:07:46,410
‫tutto ciò che dovremmo fare

157
00:07:46,410 --> 00:07:50,120
‫è qualcosa di simile a quello che abbiamo qui, ok?

158
00:07:50,120 --> 00:07:53,750
‫Quindi fondamentalmente implementare un'altra funzione per quella, e quindi

159
00:07:53,750 --> 00:07:56,630
‫restituire il nostro errore operativo in

160
00:07:56,630 --> 00:07:58,620
‫modo che la produzione dell'errore

161
00:07:58,620 --> 00:08:01,580
‫di invio possa effettivamente inviare quell'errore operativo

162
00:08:01,580 --> 00:08:03,473
‫al client, giusto?

163
00:08:04,320 --> 00:08:06,580
‫Ok, e detto questo, il

164
00:08:06,580 --> 00:08:09,080
‫nostro controller di errore è effettivamente finito.

165
00:08:09,080 --> 00:08:12,010
‫Ma ci sono ancora alcuni altri errori che dobbiamo

166
00:08:12,010 --> 00:08:16,090
‫gestire che sono completamente al di fuori di Mongo o anche di Express.

167
00:08:16,090 --> 00:08:19,123
‫E così lo faremo nel resto di questa sezione.

