﻿1
00:00:00,980 --> 00:00:02,560
‫Narratore: In questo

2
00:00:02,560 --> 00:00:05,490
‫video utilizzeremo un semplice trucco per impedire agli

3
00:00:05,490 --> 00:00:08,750
‫utenti di scrivere più recensioni per gli stessi tour,

4
00:00:08,750 --> 00:00:11,323
‫quindi in pratica evitando recensioni duplicate.

5
00:00:12,930 --> 00:00:16,140
‫Quindi nell'ultimo video abbiamo creato tutte queste

6
00:00:16,140 --> 00:00:18,500
‫recensioni per calcolare le medie.

7
00:00:18,500 --> 00:00:21,400
‫E abbiamo creato più recensioni per un tour,

8
00:00:21,400 --> 00:00:23,630
‫ma tutte dallo stesso utente.

9
00:00:23,630 --> 00:00:27,590
‫Ma in pratica non ha molto senso, no?

10
00:00:27,590 --> 00:00:29,700
‫Quindi, nel mondo reale, ogni

11
00:00:29,700 --> 00:00:32,510
‫utente dovrebbe rivedere ogni tour solo una volta.

12
00:00:32,510 --> 00:00:35,670
‫Quindi, in pratica, si verifica una recensione duplicata quando

13
00:00:35,670 --> 00:00:38,330
‫c'è una recensione con lo stesso utente e

14
00:00:38,330 --> 00:00:40,060
‫lo stesso ID tour.

15
00:00:40,060 --> 00:00:43,580
‫Ed è quello che vogliamo evitare che accada.

16
00:00:43,580 --> 00:00:45,410
‫E la soluzione ovvia

17
00:00:45,410 --> 00:00:48,470
‫qui è usare solo un indice univoco, giusto?

18
00:00:48,470 --> 00:00:50,780
‫Tuttavia, non è sufficiente

19
00:00:50,780 --> 00:00:53,120
‫impostare entrambi questi campi su univoco.

20
00:00:53,120 --> 00:00:55,770
‫E in realtà sarebbe davvero molto

21
00:00:55,770 --> 00:01:00,240
‫sbagliato, perché ciò significherebbe che ogni tour può ottenere solo una recensione

22
00:01:00,240 --> 00:01:03,570
‫e ogni utente può scrivere solo una recensione.

23
00:01:03,570 --> 00:01:06,150
‫E ovviamente non è quello che vogliamo.

24
00:01:06,150 --> 00:01:09,900
‫Quindi ciò di cui abbiamo bisogno è che entrambi insieme siano

25
00:01:09,900 --> 00:01:14,150
‫unici, in modo che la combinazione di utente e tour sia sempre unica.

26
00:01:14,150 --> 00:01:17,460
‫Quindi sembra un po' complicato, ma fortunatamente per

27
00:01:17,460 --> 00:01:21,170
‫noi, in realtà è molto facile da ottenere con gli indici.

28
00:01:21,170 --> 00:01:24,860
‫Quindi abbiamo già creato un indice composto sul tour prima, e quindi

29
00:01:24,860 --> 00:01:27,523
‫ora facciamo lo stesso qui sulle recensioni.

30
00:01:28,660 --> 00:01:32,400
‫Quindi di nuovo, proprio qui dopo la definizione dello

31
00:01:32,400 --> 00:01:36,513
‫schema, e ovviamente siamo ancora nel modello di revisione, giusto?

32
00:01:38,210 --> 00:01:41,450
‫Quindi rivedi, e questo non è

33
00:01:41,450 --> 00:01:44,800
‫corretto, quindi rivedi lo schema dot index...

34
00:01:47,740 --> 00:01:51,530
‫Tour impostato su uno, e ancora una volta non è molto importante se in

35
00:01:51,530 --> 00:01:53,563
‫questo caso è uno o meno uno.

36
00:01:55,310 --> 00:01:58,180
‫E anche l'utente è impostato su uno, ok.

37
00:01:58,180 --> 00:02:00,940
‫E così di nuovo, è simile a quello

38
00:02:00,940 --> 00:02:03,980
‫che abbiamo fatto prima, ma qui lo porteremo al

39
00:02:03,980 --> 00:02:07,140
‫livello successivo e ora aggiungeremo un oggetto per le opzioni.

40
00:02:07,140 --> 00:02:10,109
‫E l'opzione qui che imposteremo è univoca

41
00:02:10,109 --> 00:02:11,350
‫(digitazione) impostata su

42
00:02:11,350 --> 00:02:12,373
‫true.

43
00:02:15,010 --> 00:02:16,240
‫Ed è proprio così.

44
00:02:16,240 --> 00:02:18,700
‫Questo otterrà esattamente ciò che vogliamo.

45
00:02:18,700 --> 00:02:21,290
‫Quindi ora ogni combinazione di tour e utente

46
00:02:21,290 --> 00:02:22,903
‫deve essere sempre unica.

47
00:02:23,780 --> 00:02:26,050
‫Quindi diamogli un salvataggio qui,

48
00:02:26,050 --> 00:02:29,640
‫o due, e poi andiamo a testarlo in realtà.

49
00:02:29,640 --> 00:02:31,360
‫Ora, quando l'ho testato per la

50
00:02:31,360 --> 00:02:33,550
‫prima volta, in realtà non ha funzionato subito.

51
00:02:33,550 --> 00:02:36,530
‫Davvero, ha iniziato a funzionare solo il giorno

52
00:02:36,530 --> 00:02:39,610
‫dopo, e non sono sicuro del perché, ma se

53
00:02:39,610 --> 00:02:41,910
‫succede a te, non preoccuparti, ok.

54
00:02:41,910 --> 00:02:43,840
‫E forse potrebbe succedere anche adesso che

55
00:02:43,840 --> 00:02:45,240
‫sto registrando questo video.

56
00:02:46,080 --> 00:02:49,970
‫Comunque, in questo momento, non dovrebbero esserci recensioni sul tour

57
00:02:49,970 --> 00:02:51,963
‫a cui stavamo lavorando.

58
00:02:52,810 --> 00:02:57,110
‫Quindi, solo per assicurarci di avere ancora zero

59
00:02:57,110 --> 00:03:01,010
‫valutazioni e anche le recensioni sono vuote.

60
00:03:01,010 --> 00:03:02,840
‫E quindi creiamo ancora una

61
00:03:02,840 --> 00:03:05,223
‫volta una nuova recensione su questo tour.

62
00:03:06,720 --> 00:03:07,553
‫Va bene.

63
00:03:09,800 --> 00:03:13,490
‫Quindi questa è una recensione, quindi un utente e una recensione.

64
00:03:13,490 --> 00:03:17,660
‫Quindi, ovviamente, dovrebbe funzionare, ma se ora lo mando

65
00:03:17,660 --> 00:03:22,000
‫di nuovo e diciamo che lo imposto a quattro e

66
00:03:22,000 --> 00:03:25,290
‫dico okay, allora non dovrebbe funzionare, okay.

67
00:03:25,290 --> 00:03:27,310
‫Tieni presente che potrebbe ancora funzionare

68
00:03:27,310 --> 00:03:30,170
‫a causa del problema che ti dicevo prima, ok.

69
00:03:30,170 --> 00:03:34,253
‫Quindi a volte questo tipo di indice non viene impostato immediatamente.

70
00:03:35,850 --> 00:03:39,120
‫Oh, ma in realtà, nel mio caso qui ha funzionato subito.

71
00:03:39,120 --> 00:03:43,307
‫Quindi otteniamo questo errore di chiave duplicata su questo indice qui, e

72
00:03:43,307 --> 00:03:47,210
‫quindi questo è esattamente l'indice che abbiamo appena creato prima.

73
00:03:47,210 --> 00:03:50,063
‫Quindi diamo un'occhiata anche qui in Compass.

74
00:03:52,090 --> 00:03:54,153
‫Quindi qui in realtà non lo

75
00:03:55,547 --> 00:03:57,970
‫è, quindi lo farò proprio come ho

76
00:03:57,970 --> 00:03:59,873
‫fatto prima e ricollegherò sostanzialmente.

77
00:04:04,210 --> 00:04:07,893
‫Quindi andando ai recenti, quindi collegandosi qui.

78
00:04:12,240 --> 00:04:13,360
‫Naturisti...

79
00:04:16,760 --> 00:04:17,593
‫Quindi...

80
00:04:19,390 --> 00:04:20,453
‫Ovviamente i tour

81
00:04:21,520 --> 00:04:24,690
‫e i nostri indici qui ora sono questi quattro.

82
00:04:24,690 --> 00:04:26,640
‫E quindi è quello che

83
00:04:26,640 --> 00:04:29,920
‫abbiamo appena creato, o in realtà non lo è (ride), okay.

84
00:04:29,920 --> 00:04:32,290
‫Quindi, per qualche ragione, non è qui,

85
00:04:32,290 --> 00:04:34,400
‫quindi è proprio quello che stavo

86
00:04:34,400 --> 00:04:38,083
‫dicendo prima, ma non importa perché in realtà funziona nel nostro codice.

87
00:04:39,840 --> 00:04:43,510
‫Ok, quindi non siamo stati in grado di creare due

88
00:04:43,510 --> 00:04:46,220
‫recensioni provenienti dallo stesso utente, ok.

89
00:04:46,220 --> 00:04:48,480
‫Ma se ora accedi come

90
00:04:48,480 --> 00:04:52,740
‫qualcun altro, beh, allora saremo sicuramente in grado di pubblicare questa recensione.

91
00:04:52,740 --> 00:04:55,530
‫Quindi vediamo quale utente potremmo usare ora.

92
00:04:55,530 --> 00:04:58,973
‫Quindi portiamo qui tutti gli utenti, cosa che

93
00:05:01,160 --> 00:05:04,970
‫non posso perché non sono un amministratore (ride), ok.

94
00:05:04,970 --> 00:05:07,070
‫Quindi ho dimenticato quella

95
00:05:07,070 --> 00:05:10,500
‫parte, e quindi lo recupererò semplicemente da Compass.

96
00:05:10,500 --> 00:05:12,003
‫A volte è semplicemente più facile.

97
00:05:13,230 --> 00:05:15,410
‫Quindi questa è una guida,

98
00:05:15,410 --> 00:05:19,443
‫un utente (esclama), quindi usiamo questo Eduardo qui o qualcosa del genere.

99
00:05:22,120 --> 00:05:26,943
‫Quindi accediamo come questa persona, come questo utente.

100
00:05:31,120 --> 00:05:34,270
‫Sì, con successo, e ora dovremmo essere

101
00:05:34,270 --> 00:05:39,000
‫autorizzati a creare una recensione, e in effetti eccola qui, ok.

102
00:05:39,000 --> 00:05:40,483
‫E se

103
00:05:41,720 --> 00:05:45,970
‫ora lo aggiorniamo, avremo le nostre due valutazioni, fantastico.

104
00:05:45,970 --> 00:05:48,620
‫Ora lo stiamo testando di nuovo, quindi

105
00:05:48,620 --> 00:05:51,510
‫se lo inviamo di nuovo, non funzionerà perché di

106
00:05:51,510 --> 00:05:53,530
‫nuovo, abbiamo un errore duplicato.

107
00:05:53,530 --> 00:05:54,640
‫Stupendo.

108
00:05:54,640 --> 00:05:57,110
‫C'è solo un'altra cosa

109
00:05:57,110 --> 00:06:00,693
‫che volevo mostrarti, quindi per questo, accederò come

110
00:06:03,040 --> 00:06:07,300
‫un'altra persona, ok, in modo da poter creare un'altra recensione.

111
00:06:07,300 --> 00:06:10,523
‫Quindi questa volta sarò questo Max Smith.

112
00:06:12,150 --> 00:06:14,203
‫E quindi accediamo.

113
00:06:17,140 --> 00:06:18,420
‫(clic del

114
00:06:18,420 --> 00:06:21,350
‫mouse) Ok, ora sono ufficialmente Max

115
00:06:21,350 --> 00:06:23,973
‫e potrò pubblicare questa recensione.

116
00:06:27,500 --> 00:06:28,453
‫Quindi con

117
00:06:30,840 --> 00:06:32,210
‫cinque, sono in grado

118
00:06:32,210 --> 00:06:35,123
‫di farlo, e ora voglio dare un'occhiata alla media.

119
00:06:36,080 --> 00:06:40,660
‫Ok, quindi in questo momento è questo 4. 6666, che ovviamente

120
00:06:40,660 --> 00:06:43,040
‫non ha un bell'aspetto.

121
00:06:43,040 --> 00:06:45,090
‫E potremmo sistemare questo nel front-end.

122
00:06:45,090 --> 00:06:47,330
‫Ad esempio, quando richiediamo questi dati

123
00:06:47,330 --> 00:06:49,490
‫dall'API e poi li

124
00:06:49,490 --> 00:06:52,010
‫visualizziamo, potremmo fare questo arrotondamento sul front-end.

125
00:06:52,010 --> 00:06:55,260
‫Ma in realtà, voglio farlo proprio qui sul back-end

126
00:06:55,260 --> 00:06:59,250
‫in modo che l'utente finale ottenga già questo valore arrotondato finale, che

127
00:06:59,250 --> 00:07:02,980
‫in questo caso sarebbe 4. 7, giusto?

128
00:07:02,980 --> 00:07:06,340
‫E per farlo, ti mostrerò una piccola nuova funzionalità

129
00:07:06,340 --> 00:07:09,230
‫in Mongoose che non abbiamo ancora usato.

130
00:07:09,230 --> 00:07:12,323
‫Quindi andiamo al nostro modello di tour,

131
00:07:13,220 --> 00:07:15,070
‫ea quella media, quindi

132
00:07:15,070 --> 00:07:16,410
‫proprio qui.

133
00:07:16,410 --> 00:07:19,132
‫E così ora, possiamo usare una funzione setter.

134
00:07:19,132 --> 00:07:21,100
‫(digitando) Quindi imposta e

135
00:07:21,100 --> 00:07:24,070
‫questa funzione verrà eseguita ogni volta che viene

136
00:07:24,070 --> 00:07:27,257
‫impostato un nuovo valore per questo campo, ok.

137
00:07:27,257 --> 00:07:31,180
‫E quindi qui, di solito specifichiamo una funzione di callback, che

138
00:07:31,180 --> 00:07:33,003
‫riceve il valore corrente.

139
00:07:34,570 --> 00:07:37,610
‫E in questo caso, restituisce sostanzialmente questo valore,

140
00:07:37,610 --> 00:07:38,533
‫ma arrotondato.

141
00:07:39,760 --> 00:07:44,760
‫Quindi usiamo math dot round per il valore corrente, ma il problema

142
00:07:46,040 --> 00:07:48,610
‫con math dot round è

143
00:07:48,610 --> 00:07:51,240
‫che arrotonda i valori a numeri interi.

144
00:07:51,240 --> 00:07:54,253
‫Quindi, per esempio, se avessimo qualcosa

145
00:07:55,412 --> 00:07:58,830
‫del genere, arrotonderemo questo a cinque, ok.

146
00:07:58,830 --> 00:08:00,410
‫E non è quello che vogliamo.

147
00:08:00,410 --> 00:08:03,610
‫Vogliamo che sia arrotondato a 4. 7.

148
00:08:03,610 --> 00:08:05,310
‫E quindi useremo

149
00:08:05,310 --> 00:08:10,037
‫un trucco qui, che è abbastanza comune, quindi moltiplicando questo per 10, e

150
00:08:10,037 --> 00:08:13,647
‫quindi con quello, otterremmo 46. 666, e

151
00:08:14,580 --> 00:08:17,960
‫quindi questo arrotondato sarebbe 47.

152
00:08:17,960 --> 00:08:21,120
‫E quindi, dividiamo di nuovo i risultati per 10, e questo

153
00:08:21,120 --> 00:08:22,810
‫è 4. 7.

154
00:08:26,470 --> 00:08:29,180
‫Va bene, e in effetti è così.

155
00:08:29,180 --> 00:08:31,790
‫Quindi, di nuovo, una funzione setter qui che

156
00:08:31,790 --> 00:08:34,710
‫verrà eseguita ogni volta che c'è un nuovo valore per

157
00:08:34,710 --> 00:08:36,903
‫il campo della media delle valutazioni.

158
00:08:38,640 --> 00:08:42,650
‫Quindi, solo per testarlo, aggiorniamo semplicemente quest'ultima recensione

159
00:08:42,650 --> 00:08:45,743
‫che abbiamo aggiunto, che aveva un

160
00:08:49,080 --> 00:08:52,030
‫cinque, e teniamola a cinque.

161
00:08:52,030 --> 00:08:54,830
‫Quindi tutto ciò che vogliamo fare è rieseguire

162
00:08:54,830 --> 00:08:57,283
‫quella funzione che crea questa media.

163
00:08:59,490 --> 00:09:02,910
‫Quindi se lo faccio ora e ora faccio il mio

164
00:09:02,910 --> 00:09:05,853
‫tour, dovremmo ottenere 4. 7 qui come media.

165
00:09:06,780 --> 00:09:09,620
‫E sì, ci siamo.

166
00:09:09,620 --> 00:09:13,210
‫Fantastico, e in realtà è già tutto per questo video.

167
00:09:13,210 --> 00:09:15,940
‫Quindi abbiamo creato questa simpatica funzione setter

168
00:09:15,940 --> 00:09:18,940
‫e abbiamo creato questo indice composto univoco qui

169
00:09:18,940 --> 00:09:21,000
‫per garantire che un utente

170
00:09:21,000 --> 00:09:24,053
‫non possa scrivere più recensioni per lo stesso tour.

