﻿1
00:00:01,090 --> 00:00:03,370
‫Insegnante: Ora iniziamo a creare

2
00:00:03,370 --> 00:00:06,903
‫documenti, testare il modello e iniziare a usare davvero Mongoose.

3
00:00:08,510 --> 00:00:10,570
‫E sono davvero entusiasta di

4
00:00:10,570 --> 00:00:12,823
‫questo video, quindi iniziamo davvero da qui.

5
00:00:14,130 --> 00:00:17,143
‫Quindi quello che faremo è creare una nuova

6
00:00:19,000 --> 00:00:21,373
‫variabile, e la chiamerò testTour, e

7
00:00:22,510 --> 00:00:24,400
‫questo sarà un nuovo

8
00:00:24,400 --> 00:00:26,500
‫documento creato dal modello del tour

9
00:00:26,500 --> 00:00:28,460
‫che abbiamo creato nell'ultima lezione.

10
00:00:28,460 --> 00:00:29,520
‫Quindi

11
00:00:29,520 --> 00:00:33,110
‫quello che faremo è dire nuovo Tour e

12
00:00:33,110 --> 00:00:36,443
‫poi passare un oggetto con i dati.

13
00:00:38,020 --> 00:00:39,913
‫Quindi il nome, diciamo, di

14
00:00:41,920 --> 00:00:44,100
‫nuovo, "The Forest Hiker", proprio come

15
00:00:44,100 --> 00:00:46,463
‫abbiamo usato prima, quindi la valutazione, diciamo

16
00:00:47,630 --> 00:00:49,513
‫4. 7,

17
00:00:53,157 --> 00:00:54,740
‫e poi

18
00:00:56,010 --> 00:00:58,643
‫il prezzo, diciamo 497, ok?

19
00:00:59,690 --> 00:01:02,570
‫Quindi, questo è, ancora una volta, un nuovo documento

20
00:01:02,570 --> 00:01:04,890
‫che abbiamo creato da un modello di

21
00:01:04,890 --> 00:01:06,610
‫tour, o costruttori di funzioni,

22
00:01:06,610 --> 00:01:08,830
‫e come ho detto prima, questo

23
00:01:08,830 --> 00:01:11,390
‫è un po' l'uso di costruttori di

24
00:01:11,390 --> 00:01:14,660
‫funzioni JavaScript, o classi JavaScript se stai usando ES6, fondamentalmente

25
00:01:14,660 --> 00:01:16,440
‫per creare nuovi oggetti da

26
00:01:16,440 --> 00:01:18,370
‫una classe, giusto, e quindi

27
00:01:18,370 --> 00:01:21,020
‫questa è esattamente la stessa sintassi, in realtà,

28
00:01:21,020 --> 00:01:22,660
‫quindi usiamo la

29
00:01:22,660 --> 00:01:24,780
‫parola chiave name e poi il

30
00:01:24,780 --> 00:01:27,730
‫nome della classe in ES6, proprio così, va bene?

31
00:01:27,730 --> 00:01:29,930
‫Ora qui, non è esattamente la stessa

32
00:01:29,930 --> 00:01:31,890
‫cosa, ma questa analogia

33
00:01:31,890 --> 00:01:33,890
‫è utile per capire come funziona.

34
00:01:33,890 --> 00:01:36,710
‫Quindi questo documento del tour di prova che abbiamo appena

35
00:01:36,710 --> 00:01:39,380
‫creato è un'istanza del modello del tour, e quindi

36
00:01:39,380 --> 00:01:41,670
‫ora ha un paio di metodi su di

37
00:01:41,670 --> 00:01:43,010
‫esso che possiamo

38
00:01:43,010 --> 00:01:44,873
‫usare per interagire con il database.

39
00:01:45,890 --> 00:01:47,750
‫Quindi lascia che te lo mostri.

40
00:01:47,750 --> 00:01:52,030
‫Quindi ora possiamo dire testTour. save, e questo lo

41
00:01:52,030 --> 00:01:53,550
‫salverà nella

42
00:01:53,550 --> 00:01:56,810
‫raccolta dei tour nel database, ok, ed

43
00:01:56,810 --> 00:01:59,060
‫è davvero così semplice.

44
00:01:59,060 --> 00:02:01,700
‫Quindi, di nuovo, abbiamo la nostra istanza

45
00:02:01,700 --> 00:02:03,730
‫del documento che è testTour,

46
00:02:03,730 --> 00:02:05,870
‫e lì possiamo quindi chiamare il

47
00:02:05,870 --> 00:02:08,653
‫metodo save per salvare il documento nel database.

48
00:02:09,490 --> 00:02:11,310
‫Ora questo salvataggio qui restituirà

49
00:02:11,310 --> 00:02:13,453
‫quindi una promessa che possiamo quindi consumare.

50
00:02:15,010 --> 00:02:17,920
‫Quindi per ora, usiamo allora per quello, e

51
00:02:17,920 --> 00:02:19,797
‫in futuro, useremo effettivamente async

52
00:02:19,797 --> 00:02:23,340
‫wait per consumare queste promesse, ma per ora, manteniamolo

53
00:02:23,340 --> 00:02:24,830
‫semplice e non

54
00:02:24,830 --> 00:02:26,880
‫creiamo altre funzioni, e quindi

55
00:02:26,880 --> 00:02:28,750
‫invece, siamo semplicemente usando

56
00:02:28,750 --> 00:02:30,550
‫il metodo then qui.

57
00:02:30,550 --> 00:02:33,010
‫Quindi qui abbiamo accesso al documento che

58
00:02:33,010 --> 00:02:35,123
‫è stato appena salvato nel database.

59
00:02:36,920 --> 00:02:39,850
‫Quindi, fondamentalmente, il valore del risultato della

60
00:02:39,850 --> 00:02:42,180
‫promessa che il metodo save

61
00:02:42,180 --> 00:02:45,690
‫restituisce è il documento finale così com'è nel database.

62
00:02:45,690 --> 00:02:47,770
‫E quindi ora andiamo

63
00:02:47,770 --> 00:02:51,293
‫avanti e registriamo il documento sulla console, ok?

64
00:02:52,290 --> 00:02:54,620
‫Ora, d'altra parte, anche il

65
00:02:54,620 --> 00:02:57,030
‫salvataggio di questo documento nel database

66
00:02:57,030 --> 00:02:59,749
‫potrebbe andare storto, quindi prendiamo quell'errore, ok?

67
00:02:59,749 --> 00:03:02,100
‫Quindi, proprio come prima, abbiamo utilizzato il

68
00:03:02,100 --> 00:03:05,400
‫metodo catch per rilevare eventuali errori potenziali, quindi se si

69
00:03:05,400 --> 00:03:07,460
‫verifica un errore durante il salvataggio del

70
00:03:07,460 --> 00:03:09,430
‫documento nel database, saremo in grado

71
00:03:09,430 --> 00:03:11,130
‫di rilevare l'errore qui in

72
00:03:11,130 --> 00:03:12,223
‫questo metodo.

73
00:03:14,820 --> 00:03:17,510
‫Ok, quindi in pratica, qui in questa funzione che

74
00:03:17,510 --> 00:03:19,103
‫sto passando a catch.

75
00:03:21,570 --> 00:03:24,710
‫Ok, per ora, tutto ciò che voglio fare, in realtà,

76
00:03:24,710 --> 00:03:26,623
‫è collegarlo anche alla console.

77
00:03:27,660 --> 00:03:30,470
‫Diciamo, "Errore", aggiungi alcuni emoji qui

78
00:03:30,470 --> 00:03:32,800
‫per renderlo più visibile

79
00:03:32,800 --> 00:03:35,154
‫nella console, quindi possiamo passare

80
00:03:35,154 --> 00:03:37,990
‫un secondo argomento nel registro della

81
00:03:37,990 --> 00:03:40,490
‫console, che sarà quindi l'errore, ok?

82
00:03:40,490 --> 00:03:41,323
‫Siete pronti?

83
00:03:41,323 --> 00:03:43,170
‫Quindi, salviamolo ora,

84
00:03:43,170 --> 00:03:46,260
‫e questo eseguirà il codice che è

85
00:03:46,260 --> 00:03:49,520
‫qui, quindi in pratica creiamo questo nuovo tour

86
00:03:49,520 --> 00:03:53,090
‫e proviamo a salvarlo subito nel database, ok?

87
00:03:53,090 --> 00:03:54,410
‫Quindi, diamo un

88
00:03:54,410 --> 00:03:56,433
‫salvataggio ora e vediamo cosa succede nella

89
00:03:58,170 --> 00:03:59,733
‫console, e infatti, ci siamo.

90
00:04:01,260 --> 00:04:03,700
‫Quindi vedi che questo è il

91
00:04:03,700 --> 00:04:07,580
‫documento che è stato appena salvato nel nostro database, ok?

92
00:04:07,580 --> 00:04:10,350
‫Quindi qui in realtà vediamo anche

93
00:04:10,350 --> 00:04:13,451
‫l'ID, e questo è semplicemente generato automaticamente da

94
00:04:13,451 --> 00:04:16,770
‫MongoDB, ed è semplicemente l'identificatore univoco per il documento.

95
00:04:16,770 --> 00:04:19,940
‫Quindi, proprio come è successo prima nella sezione

96
00:04:19,940 --> 00:04:22,800
‫MongoDB, otteniamo automaticamente questo identificatore univoco per

97
00:04:22,800 --> 00:04:24,290
‫il nuovo oggetto.

98
00:04:24,290 --> 00:04:26,960
‫Quindi anche Mongoose aggiunge automaticamente questa

99
00:04:26,960 --> 00:04:29,800
‫V e la imposta a zero qui, ma

100
00:04:29,800 --> 00:04:32,770
‫non è molto importante a questo punto, ok?

101
00:04:32,770 --> 00:04:35,090
‫Ciò che conta qui è

102
00:04:35,090 --> 00:04:38,510
‫che il nostro nuovo documento è stato effettivamente aggiunto

103
00:04:38,510 --> 00:04:40,920
‫con successo al database e, solo per

104
00:04:40,920 --> 00:04:45,570
‫essere sicuri, passiamo effettivamente a Compass e diamo un'occhiata al nostro database lì.

105
00:04:45,570 --> 00:04:48,150
‫Quindi qui abbiamo la raccolta dei

106
00:04:48,150 --> 00:04:51,850
‫tour e poi abbiamo il documento che abbiamo appena creato.

107
00:04:51,850 --> 00:04:54,940
‫Quindi ha lo stesso identico ID, e ovviamente tutti gli

108
00:04:54,940 --> 00:04:57,410
‫altri dati che abbiamo inserito lì, e quindi

109
00:04:57,410 --> 00:04:59,230
‫in effetti, questo è l'oggetto che

110
00:04:59,230 --> 00:05:00,543
‫abbiamo appena creato.

111
00:05:01,550 --> 00:05:03,960
‫E tieni presente che avevamo effettivamente cancellato

112
00:05:03,960 --> 00:05:05,830
‫la raccolta dei tour qui

113
00:05:05,830 --> 00:05:07,800
‫in uno dei video precedenti, giusto,

114
00:05:07,800 --> 00:05:10,010
‫ma Mongoose ha creato automaticamente questa

115
00:05:10,010 --> 00:05:12,070
‫nuova raccolta qui non appena abbiamo

116
00:05:12,070 --> 00:05:13,960
‫creato il primo documento utilizzando

117
00:05:13,960 --> 00:05:15,730
‫il modello del tour, e

118
00:05:15,730 --> 00:05:17,250
‫quindi questo nome

119
00:05:17,250 --> 00:05:19,820
‫qui in pratica viene da quel modello di

120
00:05:19,820 --> 00:05:23,730
‫tour, ci dà semplicemente questo nome plurale, proprio come avevamo prima.

121
00:05:23,730 --> 00:05:26,870
‫Perfetto, abbiamo appena fatto interagire la nostra applicazione

122
00:05:26,870 --> 00:05:29,660
‫express con un database MongoDB per

123
00:05:29,660 --> 00:05:31,060
‫la prima volta,

124
00:05:31,060 --> 00:05:34,690
‫e questo è davvero sorprendente, se me lo chiedi.

125
00:05:34,690 --> 00:05:35,900
‫Quindi questo significa che

126
00:05:35,900 --> 00:05:39,343
‫in questo momento siamo in grado di creare documenti direttamente dal nostro codice.

127
00:05:40,560 --> 00:05:43,700
‫Quindi, questo mi rende davvero felice, quindi proviamo

128
00:05:43,700 --> 00:05:45,670
‫di nuovo con un

129
00:05:45,670 --> 00:05:48,140
‫altro, va bene, ma in realtà

130
00:05:48,140 --> 00:05:49,930
‫prima di farlo, voglio

131
00:05:49,930 --> 00:05:52,630
‫solo ricaricare questo file qui che proverà

132
00:05:52,630 --> 00:05:55,710
‫a salvare di nuovo questo documento qui nel

133
00:05:55,710 --> 00:05:58,400
‫database , giusto, semplicemente perché tutto

134
00:05:58,400 --> 00:06:00,183
‫questo codice qui

135
00:06:00,183 --> 00:06:03,350
‫viene eseguito ogni volta che salviamo il file.

136
00:06:03,350 --> 00:06:05,945
‫Ora, proviamo a indovinare cosa succederà non

137
00:06:05,945 --> 00:06:07,730
‫appena salvo questo file.

138
00:06:07,730 --> 00:06:08,563
‫Puoi indovinare?

139
00:06:09,930 --> 00:06:11,610
‫Aspettiamo, e

140
00:06:11,610 --> 00:06:14,160
‫in effetti otteniamo qualcosa di

141
00:06:14,160 --> 00:06:16,000
‫diverso ora, otteniamo un

142
00:06:16,000 --> 00:06:18,260
‫errore qui e l'errore che

143
00:06:18,260 --> 00:06:20,940
‫vediamo è questa raccolta di errori

144
00:06:20,940 --> 00:06:25,940
‫di chiave duplicata, che qui sotto dice questa chiave duplicata, ok?

145
00:06:26,210 --> 00:06:28,520
‫Quindi abbiamo già un tour con

146
00:06:28,520 --> 00:06:30,680
‫il nome di "Forest Hiker", e

147
00:06:30,680 --> 00:06:32,843
‫quindi ora stavamo cercando di crearne

148
00:06:32,843 --> 00:06:35,170
‫un altro, e poiché nel nostro

149
00:06:35,170 --> 00:06:37,817
‫schema abbiamo questa proprietà unica qui, non è

150
00:06:37,817 --> 00:06:39,370
‫consentito, lo ricordi?

151
00:06:39,370 --> 00:06:40,852
‫Quindi abbiamo impostato

152
00:06:40,852 --> 00:06:43,250
‫questo univoco qui su vero per rendere

153
00:06:43,250 --> 00:06:45,810
‫impossibile avere due tour con lo stesso

154
00:06:45,810 --> 00:06:48,743
‫nome, e quindi abbiamo appena dimostrato che funziona davvero.

155
00:06:49,580 --> 00:06:51,990
‫Va bene, sostituiamo semplicemente il codice che

156
00:06:51,990 --> 00:06:53,370
‫abbiamo qui per

157
00:06:53,370 --> 00:06:56,173
‫creare un nuovo tour con un altro nome.

158
00:06:57,060 --> 00:06:59,917
‫Chiamiamolo "The Park Camper", e andiamo

159
00:07:01,640 --> 00:07:04,560
‫avanti e rimuoviamo il prezzo e anche

160
00:07:04,560 --> 00:07:05,943
‫il rating.

161
00:07:06,890 --> 00:07:09,403
‫Allora, puoi indovinare cosa succederà adesso?

162
00:07:10,280 --> 00:07:12,450
‫In realtà chiariamo, o in realtà

163
00:07:12,450 --> 00:07:14,370
‫lo ha già caricato perché

164
00:07:14,370 --> 00:07:17,190
‫non appena ho fatto clic qui, ha salvato

165
00:07:17,190 --> 00:07:20,560
‫il file e quindi, sì, abbiamo appena ricevuto un altro

166
00:07:20,560 --> 00:07:22,530
‫errore, quindi puoi vederlo qui,

167
00:07:22,530 --> 00:07:24,620
‫il che significa che non abbiamo

168
00:07:24,620 --> 00:07:27,170
‫salvato con successo questo documento nel database,

169
00:07:27,170 --> 00:07:30,200
‫e quello che abbiamo qui ora è un errore

170
00:07:30,200 --> 00:07:32,090
‫di convalida proveniente dal

171
00:07:32,090 --> 00:07:34,710
‫campo del prezzo che dice "Un tour deve

172
00:07:34,710 --> 00:07:36,670
‫avere un prezzo", e quindi

173
00:07:36,670 --> 00:07:39,970
‫questo è esattamente il messaggio che abbiamo specificato qui, giusto?

174
00:07:39,970 --> 00:07:42,160
‫Semplicemente perché in questa riga abbiamo

175
00:07:42,160 --> 00:07:45,320
‫detto che il prezzo è un campo obbligatorio, va

176
00:07:45,320 --> 00:07:47,050
‫bene, e quindi questo

177
00:07:47,050 --> 00:07:49,750
‫richiesto, come ho detto, è un validatore, e

178
00:07:49,750 --> 00:07:52,260
‫quindi quaggiù, otteniamo quindi un errore di validazione.

179
00:07:52,260 --> 00:07:53,520
‫Quindi ora

180
00:07:55,860 --> 00:08:00,050
‫aggiustiamolo e specifichiamo il prezzo, diciamo 997, e diamogli

181
00:08:00,050 --> 00:08:01,460
‫un altro salvataggio.

182
00:08:01,460 --> 00:08:03,310
‫Ora, questa volta, dovrebbe funzionare

183
00:08:03,310 --> 00:08:06,010
‫perché la valutazione non è richiesta, e

184
00:08:06,010 --> 00:08:07,780
‫quindi quando veniamo

185
00:08:07,780 --> 00:08:09,930
‫quaggiù, il nostro documento è

186
00:08:09,930 --> 00:08:13,060
‫stato effettivamente salvato con successo nel database, vedete?

187
00:08:13,060 --> 00:08:15,450
‫Ora, non abbiamo specificato la valutazione qui in questo tour di

188
00:08:15,450 --> 00:08:19,240
‫prova, ma vedete che è ancora 4. 5, e questo perché

189
00:08:19,240 --> 00:08:20,800
‫impostiamo il valore predefinito

190
00:08:20,800 --> 00:08:23,770
‫su 4. 5 quassù.

191
00:08:23,770 --> 00:08:24,750
‫Quindi volevo

192
00:08:24,750 --> 00:08:26,763
‫solo mostrartelo qui in questo rapido esempio.

193
00:08:27,770 --> 00:08:30,810
‫Ok, quindi abbiamo avuto successo di nuovo, quindi

194
00:08:30,810 --> 00:08:33,210
‫torniamo qui, ricarichiamo, stai facendo clic

195
00:08:33,210 --> 00:08:35,690
‫su questo pulsante e in effetti ora

196
00:08:35,690 --> 00:08:37,840
‫abbiamo i nostri due tour.

197
00:08:37,840 --> 00:08:40,930
‫Fantastico, e ricordo quanto sia stato fantastico per me

198
00:08:40,930 --> 00:08:43,370
‫quando ha funzionato la prima volta quando

199
00:08:43,370 --> 00:08:46,250
‫stavo iniziando a imparare Express e Mongo, e

200
00:08:46,250 --> 00:08:48,120
‫come creare queste applicazioni, quindi

201
00:08:48,120 --> 00:08:50,240
‫spero davvero che tu ti senta

202
00:08:50,240 --> 00:08:52,130
‫allo stesso modo in questo

203
00:08:52,130 --> 00:08:54,100
‫momento, poiché hai appena creato i

204
00:08:54,100 --> 00:08:56,033
‫tuoi primissimi documenti utilizzando Express

205
00:08:56,033 --> 00:08:57,823
‫e, naturalmente, MongoDB.

