﻿1
00:00:01,060 --> 00:00:03,440
‫Istruttore: Quindi, Mongoose offre a

2
00:00:03,440 --> 00:00:05,823
‫noi sviluppatori modi molto potenti per convalidare

3
00:00:05,823 --> 00:00:08,280
‫i dati che entrano nel nostro modello.

4
00:00:08,280 --> 00:00:10,430
‫E così, in questo video

5
00:00:10,430 --> 00:00:13,093
‫imparerai tutto sulla convalida dei dati con Mongoose.

6
00:00:14,870 --> 00:00:18,110
‫Ora, cosa significa esattamente convalida?

7
00:00:18,110 --> 00:00:21,470
‫Bene, la convalida sta fondamentalmente controllando se i valori inseriti

8
00:00:21,470 --> 00:00:24,270
‫sono nel formato giusto per ogni campo

9
00:00:24,270 --> 00:00:27,430
‫nel nostro schema del documento, e anche che i

10
00:00:27,430 --> 00:00:30,860
‫valori siano stati effettivamente inseriti per tutti i campi richiesti.

11
00:00:30,860 --> 00:00:33,940
‫Ora, d'altra parte, abbiamo anche la sanificazione, che

12
00:00:33,940 --> 00:00:37,240
‫serve a garantire che i dati immessi siano

13
00:00:37,240 --> 00:00:40,250
‫sostanzialmente puliti, in modo che non venga

14
00:00:40,250 --> 00:00:42,240
‫iniettato codice dannoso nel

15
00:00:42,240 --> 00:00:44,330
‫nostro database o nell'applicazione stessa.

16
00:00:44,330 --> 00:00:47,470
‫Quindi, in quel passaggio rimuoviamo i caratteri indesiderati,

17
00:00:47,470 --> 00:00:50,730
‫o anche il codice, dai dati di input, va bene?

18
00:00:50,730 --> 00:00:53,210
‫E questo è in realtà un passaggio

19
00:00:53,210 --> 00:00:56,180
‫cruciale, come uno standard d'oro nello sviluppo del back-end.

20
00:00:56,180 --> 00:00:58,690
‫Non accettare mai e poi mai i dati di

21
00:00:58,690 --> 00:01:00,690
‫input provenienti da un utente così com'è.

22
00:01:00,690 --> 00:01:03,860
‫Quindi, abbiamo sempre bisogno di disinfettare i dati in arrivo.

23
00:01:03,860 --> 00:01:06,350
‫Ma, comunque, lascerò la sanificazione dei dati

24
00:01:06,350 --> 00:01:08,620
‫per la sezione sicurezza del corso,

25
00:01:08,620 --> 00:01:10,070
‫in modo che

26
00:01:10,070 --> 00:01:13,400
‫in questa lezione possiamo concentrarci interamente sulla convalida dei dati.

27
00:01:13,400 --> 00:01:15,430
‫E stiamo eseguendo questa convalida dei

28
00:01:15,430 --> 00:01:17,240
‫dati proprio qui sul modello.

29
00:01:17,240 --> 00:01:20,130
‫E questo, ancora una volta, è dovuto alla filosofia

30
00:01:20,130 --> 00:01:22,110
‫del modello grasso e del

31
00:01:22,110 --> 00:01:24,230
‫controller sottile, che rende il modello

32
00:01:24,230 --> 00:01:26,770
‫il luogo perfetto per eseguire la convalida, giusto?

33
00:01:26,770 --> 00:01:29,540
‫E, in effetti, Mongoose viene già fornito con una

34
00:01:29,540 --> 00:01:32,230
‫serie di strumenti di convalida pronti all'uso.

35
00:01:32,230 --> 00:01:36,120
‫E quindi, ora eseguiamo un po' di convalida dei dati qui.

36
00:01:36,120 --> 00:01:37,680
‫E in realtà, l'abbiamo già fatto.

37
00:01:37,680 --> 00:01:41,850
‫Quindi, quando abbiamo usato questo require qui, in realtà è

38
00:01:41,850 --> 00:01:45,290
‫già un validatore di dati integrato, va bene?

39
00:01:45,290 --> 00:01:48,368
‫Quindi vedi che usiamo un validatore come richiesto proprio

40
00:01:48,368 --> 00:01:50,970
‫qui nelle opzioni del tipo di schema.

41
00:01:50,970 --> 00:01:54,340
‫E require è effettivamente disponibile per tutti i tipi di dati.

42
00:01:54,340 --> 00:01:56,870
‫Quindi, non solo le stringhe, ma davvero tutto.

43
00:01:56,870 --> 00:02:00,010
‫Numeri, booleani, date o qualsiasi tipo

44
00:02:00,010 --> 00:02:01,930
‫tu stia utilizzando.

45
00:02:01,930 --> 00:02:04,970
‫Quindi abbiamo anche qui univoco, ma tieni

46
00:02:04,970 --> 00:02:08,610
‫presente che questo è in realtà, tecnicamente, non un validatore.

47
00:02:08,610 --> 00:02:10,170
‫Produrrà ancora un errore

48
00:02:10,170 --> 00:02:12,080
‫quando avremo un nome duplicato, ma ancora

49
00:02:12,080 --> 00:02:15,167
‫una volta, questo non è davvero un validatore, va bene?

50
00:02:15,167 --> 00:02:17,790
‫Ma è richiesto un validatore, quindi ora

51
00:02:17,790 --> 00:02:20,403
‫te ne mostrerò un altro che

52
00:02:20,403 --> 00:02:23,000
‫è specifico solo per le

53
00:02:23,000 --> 00:02:26,870
‫stringhe, che si chiama lunghezza massima e anche lunghezza minima.

54
00:02:26,870 --> 00:02:28,160
‫Quindi, abbiamo la lunghezza

55
00:02:30,320 --> 00:02:32,830
‫massima e, come dice il nome, la usiamo

56
00:02:32,830 --> 00:02:35,470
‫per specificare la lunghezza massima che può avere una stringa.

57
00:02:35,470 --> 00:02:37,490
‫E se è più lungo,

58
00:02:37,490 --> 00:02:39,800
‫beh, allora produrrà un errore, ok?

59
00:02:39,800 --> 00:02:42,936
‫Quindi, facciamolo come abbiamo fatto prima con require,

60
00:02:42,936 --> 00:02:47,170
‫dove abbiamo specificato un array, e poi abbiamo impostato il valore.

61
00:02:47,170 --> 00:02:50,940
‫Quindi, diciamo che vogliamo 40 come lunghezza massima della

62
00:02:50,940 --> 00:02:53,920
‫stringa, e poi aggiungiamo l'errore dopo.

63
00:02:53,920 --> 00:02:56,850
‫Quindi, fondamentalmente, il messaggio di errore che otteniamo.

64
00:02:56,850 --> 00:03:01,093
‫Quindi, il nome di un tour deve contenere

65
00:03:05,410 --> 00:03:08,693
‫meno o uguale a 40 caratteri.

66
00:03:10,880 --> 00:03:13,320
‫Ok, questa è la lunghezza massima, e

67
00:03:13,320 --> 00:03:15,673
‫poi abbiamo anche la lunghezza minima.

68
00:03:18,600 --> 00:03:22,480
‫Va bene, quindi impostiamo quello da uno a 10, quindi

69
00:03:22,480 --> 00:03:27,480
‫il nome di un tour deve avere più o uguale a 10 caratteri.

70
00:03:29,010 --> 00:03:33,590
‫Ok, così abbiamo questi due validatori che in realtà

71
00:03:33,590 --> 00:03:37,320
‫sono disponibili solo su stringhe, ok?

72
00:03:37,320 --> 00:03:40,690
‫E quindi ora andiamo avanti e proviamolo.

73
00:03:40,690 --> 00:03:42,690
‫Quindi, ho intenzione di creare un nuovo tour qui.

74
00:03:44,570 --> 00:03:46,453
‫E questo non è un tour

75
00:03:48,050 --> 00:03:50,183
‫segreto, ma poi qui il resto non importa.

76
00:03:53,550 --> 00:03:56,100
‫Lo chiamerò solo un Test Tour, e

77
00:03:56,100 --> 00:03:58,160
‫vediamo quanti personaggi abbiamo, quindi

78
00:03:58,160 --> 00:04:00,280
‫quattro più uno più quattro, quindi

79
00:04:00,280 --> 00:04:02,130
‫abbiamo solo nove personaggi.

80
00:04:02,130 --> 00:04:05,223
‫E quindi, ora dovremmo aspettarci di ricevere effettivamente un errore.

81
00:04:06,490 --> 00:04:07,980
‫Quindi, proviamolo.

82
00:04:07,980 --> 00:04:09,910
‫E, infatti, un nome di tour

83
00:04:09,910 --> 00:04:12,460
‫deve avere più o uguale a 10 caratteri.

84
00:04:12,460 --> 00:04:15,873
‫Fantastico, ma ora che ne dici di aggiornare i tour?

85
00:04:17,290 --> 00:04:19,860
‫Quindi, prendiamo uno di questi qui.

86
00:04:19,860 --> 00:04:23,910
‫Quindi, abbiamo questo tour di prova due qui, quindi

87
00:04:23,910 --> 00:04:25,963
‫proviamo ad aggiornare questo.

88
00:04:27,540 --> 00:04:30,173
‫Quindi, andiamo al nostro percorso di aggiornamento del tour.

89
00:04:33,690 --> 00:04:38,023
‫E ora andiamo qui, cambiamo il nome in Test, inviamo

90
00:04:39,890 --> 00:04:43,240
‫la richiesta e otteniamo lo stesso errore.

91
00:04:43,240 --> 00:04:45,540
‫Ora, questo funziona solo a causa di

92
00:04:45,540 --> 00:04:47,400
‫un'impostazione che abbiamo impostato

93
00:04:47,400 --> 00:04:50,600
‫molto indietro, quando abbiamo implementato questo gestore di aggiornamento.

94
00:04:50,600 --> 00:04:53,853
‫Quindi, lascia che te lo mostri rapidamente nel controller del tour.

95
00:04:54,860 --> 00:04:57,846
‫Elimina e aggiorna, quindi è a causa di

96
00:04:57,846 --> 00:05:00,255
‫questa opzione qui runValidators, impostata su

97
00:05:00,255 --> 00:05:03,180
‫true che i validatori vengono eseguiti di nuovo.

98
00:05:03,180 --> 00:05:04,959
‫Se lo metto

99
00:05:04,959 --> 00:05:09,750
‫ora su false, allora Mongoose dovrebbe accettare felicemente questo nome.

100
00:05:09,750 --> 00:05:12,673
‫E infatti, lo fa, va bene.

101
00:05:14,880 --> 00:05:17,072
‫Quindi, riportiamolo su qualcosa di

102
00:05:17,072 --> 00:05:18,453
‫più lungo,

103
00:05:20,630 --> 00:05:24,073
‫non importa, ok, e se lo riporto su

104
00:05:26,950 --> 00:05:29,070
‫true, allora non dovrebbe accettarlo,

105
00:05:29,070 --> 00:05:33,140
‫e infatti, otteniamo il nostro errore indietro, va bene?

106
00:05:33,140 --> 00:05:34,540
‫Quindi, volevo solo

107
00:05:34,540 --> 00:05:36,763
‫mostrarti rapidamente il fatto di quell'impostazione.

108
00:05:38,820 --> 00:05:42,370
‫Va bene, quindi, sì, ora funzionano.

109
00:05:42,370 --> 00:05:46,030
‫Proviamo un paio di altri validatori qui.

110
00:05:46,030 --> 00:05:48,450
‫Ad esempio, ora sui numeri.

111
00:05:48,450 --> 00:05:51,520
‫Quindi, andiamo qui alla media delle valutazioni.

112
00:05:51,520 --> 00:05:53,370
‫E sappiamo che il punteggio

113
00:05:53,370 --> 00:05:57,330
‫deve essere sempre compreso tra uno e zero, e sappiamo che un

114
00:05:57,330 --> 00:06:00,880
‫punteggio deve essere sempre compreso tra uno e cinque, ok?

115
00:06:00,880 --> 00:06:03,680
‫E così, molto simile alla lunghezza minima e massima,

116
00:06:03,680 --> 00:06:06,253
‫sui numeri abbiamo semplicemente minimo e massimo.

117
00:06:08,350 --> 00:06:11,353
‫Quindi, il minimo che vogliamo è uno, e poi di

118
00:06:15,240 --> 00:06:17,253
‫nuovo il nostro messaggio di errore.

119
00:06:18,280 --> 00:06:23,280
‫Quindi, la valutazione deve essere superiore a 1. 0, diciamo.

120
00:06:26,360 --> 00:06:29,643
‫E poi il massimo è cinque.

121
00:06:34,040 --> 00:06:38,660
‫Deve essere inferiore a 5. 0, ok, e testiamo

122
00:06:38,660 --> 00:06:40,873
‫rapidamente anche questo.

123
00:06:43,300 --> 00:06:48,300
‫Quindi, creando un nuovo tour, chiamiamolo Test Tour Amazing

124
00:06:49,390 --> 00:06:53,933
‫perché ha una valutazione media di sei.

125
00:06:55,020 --> 00:06:57,680
‫Ok, allora vediamo cosa succede, e in

126
00:06:57,680 --> 00:07:00,380
‫effetti, il punteggio deve essere inferiore a cinque.

127
00:07:00,380 --> 00:07:03,620
‫Ok, quindi, anche questo non funzionerà,

128
00:07:03,620 --> 00:07:06,930
‫e ovviamente non può nemmeno essere zero.

129
00:07:06,930 --> 00:07:10,130
‫Quindi, deve essere sopra uno, e

130
00:07:10,130 --> 00:07:14,650
‫ovviamente, con quattro, funzionerà, e infatti, ecco il nostro tour.

131
00:07:14,650 --> 00:07:18,180
‫Successivamente, voglio limitare questo valore di difficoltà qui

132
00:07:18,180 --> 00:07:20,090
‫a sole tre difficoltà.

133
00:07:20,090 --> 00:07:22,480
‫Quindi, facile, medio e difficile.

134
00:07:22,480 --> 00:07:24,660
‫E se l'utente inserisce

135
00:07:24,660 --> 00:07:26,360
‫qualcos'altro, non funzionerà.

136
00:07:26,360 --> 00:07:27,623
‫Quindi, proviamolo.

137
00:07:32,660 --> 00:07:36,420
‫Quindi, il validatore che usiamo per questo si chiama enum, okay,

138
00:07:36,420 --> 00:07:38,850
‫e quindi qui possiamo passare un

139
00:07:38,850 --> 00:07:41,403
‫array dei valori, in pratica, che sono consentiti.

140
00:07:42,570 --> 00:07:47,570
‫Quindi, abbiamo facile, abbiamo medio e abbiamo difficile.

141
00:07:49,550 --> 00:07:53,380
‫Bene, ora vogliamo anche specificare il nostro messaggio di errore qui,

142
00:07:53,380 --> 00:07:56,870
‫ma in questo momento non è proprio possibile, giusto?

143
00:07:56,870 --> 00:07:59,490
‫Voglio dire, se aggiungessimo un altro argomento qui,

144
00:07:59,490 --> 00:08:01,330
‫allora non sarebbe per

145
00:08:01,330 --> 00:08:05,540
‫il messaggio di errore, sarebbe ovviamente per un altro possibile valore, ok?

146
00:08:05,540 --> 00:08:08,200
‫E quindi, la soluzione che dobbiamo

147
00:08:08,200 --> 00:08:10,993
‫fare qui è creare ancora un altro oggetto

148
00:08:11,900 --> 00:08:15,613
‫qui e quindi specificare effettivamente che questi qui sono i valori.

149
00:08:18,870 --> 00:08:23,560
‫E poi, il nostro messaggio, va bene?

150
00:08:23,560 --> 00:08:26,230
‫E così, è così che funziona davvero.

151
00:08:26,230 --> 00:08:29,040
‫Questa notazione qui è davvero solo

152
00:08:29,040 --> 00:08:32,763
‫una scorciatoia per questo oggetto completo qui, va bene?

153
00:08:34,760 --> 00:08:39,760
‫Quindi, la difficoltà è: facile, media o difficile.

154
00:08:45,280 --> 00:08:50,280
‫Ok, questo è un validatore molto carino e molto utile che è automaticamente

155
00:08:50,323 --> 00:08:53,870
‫disponibile su tutte le stringhe, ok, quindi, non provare

156
00:08:53,870 --> 00:08:57,348
‫a usarlo qui sui numeri, per esempio.

157
00:08:57,348 --> 00:08:59,870
‫Questo è solo per le stringhe.

158
00:08:59,870 --> 00:09:02,540
‫E, comunque, questo minimo e massimo qui in

159
00:09:02,540 --> 00:09:04,450
‫realtà non è solo per

160
00:09:04,450 --> 00:09:07,820
‫i numeri, ma funzionerà anche con le date, va bene?

161
00:09:07,820 --> 00:09:12,820
‫Comunque, ora finalmente proviamo anche questo.

162
00:09:13,180 --> 00:09:15,399
‫Quindi, dobbiamo cambiare il nome, e

163
00:09:15,399 --> 00:09:17,249
‫qui mettiamo qualcos'altro, va

164
00:09:20,460 --> 00:09:23,233
‫bene, e così effettivamente, otteniamo il nostro errore.

165
00:09:24,770 --> 00:09:28,080
‫Se ora mettiamo easy, allora funziona.

166
00:09:28,080 --> 00:09:30,450
‫Ok, e in realtà è tutto quello che

167
00:09:30,450 --> 00:09:31,780
‫volevo mostrarti qui in

168
00:09:31,780 --> 00:09:35,110
‫questa conferenza, ma in realtà ci sono un sacco di altri validatori.

169
00:09:35,110 --> 00:09:38,259
‫Ad esempio, sulle stringhe hai un validatore di

170
00:09:38,259 --> 00:09:40,370
‫corrispondenza per verificare se

171
00:09:40,370 --> 00:09:43,090
‫l'input corrisponde a una determinata espressione regolare.

172
00:09:43,090 --> 00:09:46,460
‫Ma credo che questi che ti ho appena mostrato

173
00:09:46,460 --> 00:09:49,250
‫qui siano i più importanti validatori incorporati.

174
00:09:49,250 --> 00:09:51,450
‫E, per un elenco completo

175
00:09:51,450 --> 00:09:54,530
‫di tutti, ovviamente, puoi sempre consultare la documentazione.

176
00:09:54,530 --> 00:09:57,590
‫Ora possiamo anche specificare i nostri validatori, e

177
00:09:57,590 --> 00:09:59,790
‫quindi è esattamente quello che faremo

178
00:09:59,790 --> 00:10:01,363
‫nel prossimo video.

