﻿1
00:00:01,210 --> 00:00:03,670
‫Relatore: Continuiamo a lavorare sulla nostra API.

2
00:00:04,530 --> 00:00:06,620
‫Nei prossimi video, implementeremo

3
00:00:06,620 --> 00:00:08,840
‫un paio di funzionalità API

4
00:00:08,840 --> 00:00:12,440
‫comuni che renderanno un'API più semplice e piacevole

5
00:00:12,440 --> 00:00:14,950
‫da usare per chiunque la utilizzerà.

6
00:00:14,950 --> 00:00:15,940
‫E in

7
00:00:15,940 --> 00:00:17,963
‫questa lezione, inizieremo con il filtraggio.

8
00:00:19,340 --> 00:00:22,830
‫Quindi, ancora una volta, la prima funzionalità che implementeremo è quella

9
00:00:22,830 --> 00:00:26,000
‫di consentire all'utente di filtrare sostanzialmente i dati utilizzando

10
00:00:26,000 --> 00:00:27,563
‫una stringa di query.

11
00:00:28,890 --> 00:00:32,233
‫Lascia che ti dica cosa sta usando Postman per una stringa di query.

12
00:00:36,610 --> 00:00:39,993
‫Quindi, chiudiamo tutti questi ragazzi.

13
00:00:46,150 --> 00:00:47,683
‫Bene.

14
00:00:47,683 --> 00:00:50,350
‫In realtà, dove il filtro avrà senso è qui

15
00:00:50,350 --> 00:00:52,793
‫su questo percorso per ottenere tutti i tour.

16
00:00:53,750 --> 00:00:55,940
‫Perché, questo è quello che,

17
00:00:55,940 --> 00:00:58,720
‫come dice il nome, ottiene tutti i tour.

18
00:00:58,720 --> 00:01:02,370
‫E quindi qui, vogliamo consentire all'utente di filtrare i dati, in

19
00:01:02,370 --> 00:01:04,840
‫modo che invece di ottenere tutti

20
00:01:04,840 --> 00:01:08,123
‫i dati, ottenga solo i dati che corrispondono al filtro.

21
00:01:09,340 --> 00:01:12,290
‫In questo modo, possiamo sostanzialmente consentire all'utente di interrogare

22
00:01:12,290 --> 00:01:14,750
‫i dati in un modo molto semplice.

23
00:01:14,750 --> 00:01:16,480
‫Ancora una volta, usando la stringa di query.

24
00:01:16,480 --> 00:01:18,850
‫E la stringa di query assomiglia un po' a questa.

25
00:01:18,850 --> 00:01:20,340
‫E sono sicuro che l'hai visto.

26
00:01:20,340 --> 00:01:23,120
‫Quindi iniziamo con un punto interrogativo e

27
00:01:23,120 --> 00:01:26,663
‫quindi possiamo semplicemente specificare alcune coppie di valori di campo.

28
00:01:28,420 --> 00:01:30,360
‫Quindi diciamo di

29
00:01:30,360 --> 00:01:33,620
‫voler filtrare per una durata pari a cinque

30
00:01:33,620 --> 00:01:36,573
‫e, allo stesso tempo, una difficoltà facile.

31
00:01:40,500 --> 00:01:44,690
‫Quindi possiamo semplicemente creare una stringa di query come questa.

32
00:01:44,690 --> 00:01:46,860
‫Quindi, di nuovo, inizia con questo

33
00:01:46,860 --> 00:01:48,800
‫punto interrogativo e quindi possiamo

34
00:01:48,800 --> 00:01:51,723
‫specificare tante coppie di valori chiave utilizzando questo formato.

35
00:01:53,000 --> 00:01:54,860
‫E ora la nostra

36
00:01:54,860 --> 00:01:57,450
‫applicazione Postman qui in realtà lo riconosce

37
00:01:57,450 --> 00:02:00,420
‫e sostanzialmente analizza questa stringa qui e mette

38
00:02:00,420 --> 00:02:04,140
‫la chiave e i valori qui in questa scheda Params.

39
00:02:04,140 --> 00:02:06,963
‫Quindi potremmo anche specificare la chiave e i valori qui.

40
00:02:07,890 --> 00:02:11,110
‫Quindi diciamo test, impostalo su ventitre, e quindi vedi qui

41
00:02:11,110 --> 00:02:12,690
‫che lo ha effettivamente

42
00:02:12,690 --> 00:02:14,483
‫aggiunto alla stringa di query.

43
00:02:15,370 --> 00:02:18,740
‫Quindi è un modo molto carino di Postman di aiutarci qui.

44
00:02:18,740 --> 00:02:21,150
‫Perché ora possiamo, ad esempio, mentre stiamo

45
00:02:21,150 --> 00:02:24,260
‫eseguendo i test, possiamo attivarli e disattivarli e puoi vedere

46
00:02:24,260 --> 00:02:25,610
‫che la stringa

47
00:02:25,610 --> 00:02:27,573
‫di query qui reagisce di conseguenza.

48
00:02:28,970 --> 00:02:32,940
‫Ad ogni modo, ora abbiamo bisogno di un modo per accedere a questi dati che

49
00:02:32,940 --> 00:02:35,883
‫si trovano in una stringa di query, nella nostra applicazione Express.

50
00:02:36,730 --> 00:02:39,210
‫Ma, fortunatamente per noi, è

51
00:02:39,210 --> 00:02:42,260
‫molto facile, perché Express se ne occupava già.

52
00:02:42,260 --> 00:02:44,690
‫Quindi questa è solo una delle tante

53
00:02:44,690 --> 00:02:48,420
‫cose che Express fa per noi per rendere davvero lo sviluppo

54
00:02:48,420 --> 00:02:50,563
‫di NodeJS molto più veloce.

55
00:02:52,420 --> 00:02:55,170
‫Quindi lascia che te lo mostri qui, in realtà nella console.

56
00:02:57,810 --> 00:03:01,380
‫Quindi questi dati sono su una richiesta, il che ha senso,

57
00:03:01,380 --> 00:03:04,013
‫e poi sono in un campo chiamato query.

58
00:03:04,980 --> 00:03:07,490
‫Quindi request dot query dovrebbe darci un

59
00:03:07,490 --> 00:03:10,630
‫oggetto ben formattato con i dati della stringa

60
00:03:10,630 --> 00:03:11,730
‫di query.

61
00:03:12,760 --> 00:03:13,593
‫Dagli un salvataggio.

62
00:03:14,530 --> 00:03:16,630
‫E nota, come l'ho effettivamente

63
00:03:16,630 --> 00:03:20,150
‫aggiunto alla funzione di gestione di tutti i tour.

64
00:03:20,150 --> 00:03:22,800
‫Quindi, di nuovo, facciamo questo tipo di filtro nel

65
00:03:22,800 --> 00:03:25,323
‫percorso in cui vogliamo ottenere tutti i tour.

66
00:03:27,140 --> 00:03:30,373
‫Proviamolo ora con questa stringa di query esatta.

67
00:03:31,400 --> 00:03:32,920
‫Inviata la richiesta.

68
00:03:32,920 --> 00:03:36,333
‫E tornando, ecco l'oggetto.

69
00:03:37,170 --> 00:03:40,420
‫In realtà rendiamo questo qui più grande così

70
00:03:40,420 --> 00:03:41,720
‫puoi vedere.

71
00:03:41,720 --> 00:03:43,650
‫Non funziona davvero.

72
00:03:43,650 --> 00:03:45,820
‫Quindi a volte so che alcune persone non riescono

73
00:03:45,820 --> 00:03:47,630
‫a vedere la parte inferiore dello schermo.

74
00:03:47,630 --> 00:03:49,080
‫Lascia che lo faccia di nuovo qui.

75
00:03:51,280 --> 00:03:52,942
‫E così, ci siamo.

76
00:03:52,942 --> 00:03:55,990
‫Abbiamo l'oggetto, che ha la durata impostata su cinque

77
00:03:55,990 --> 00:03:58,200
‫e la difficoltà impostata su facile.

78
00:03:58,200 --> 00:04:00,460
‫E così vedi che Express, molto

79
00:04:00,460 --> 00:04:04,250
‫bene, ha analizzato quella stringa in questo oggetto, facile da usare.

80
00:04:04,250 --> 00:04:06,330
‫Ora una cosa che ho notato qui è

81
00:04:06,330 --> 00:04:08,380
‫che in realtà ci manca il

82
00:04:08,380 --> 00:04:10,440
‫registro che avevamo più facilmente qui nella console.

83
00:04:10,440 --> 00:04:12,540
‫Diamo un'occhiata al motivo per cui sta accadendo.

84
00:04:15,431 --> 00:04:18,430
‫Quindi, per qualche ragione, ora abbiamo l'applicazione prima

85
00:04:18,430 --> 00:04:21,310
‫di leggere effettivamente la variabile d'ambiente.

86
00:04:21,310 --> 00:04:24,113
‫In questo modo, l'applicazione non può accedervi.

87
00:04:25,010 --> 00:04:27,600
‫Pensavo di averlo risolto prima, ma per qualche

88
00:04:27,600 --> 00:04:29,300
‫motivo è tornato ora.

89
00:04:30,340 --> 00:04:32,390
‫Dagli un altro salvataggio qui.

90
00:04:32,390 --> 00:04:33,690
‫E lo proverò di nuovo.

91
00:04:36,180 --> 00:04:38,933
‫Ora riprendiamo la nostra registrazione.

92
00:04:40,200 --> 00:04:43,750
‫Una richiesta di ricezione a questo URL e poi con

93
00:04:43,750 --> 00:04:45,963
‫il resto dei dati qui.

94
00:04:48,260 --> 00:04:50,600
‫Ad ogni modo, ora utilizziamo effettivamente

95
00:04:50,600 --> 00:04:53,200
‫quei dati per implementare il nostro filtro.

96
00:04:53,200 --> 00:04:55,840
‫Ma prima di poterlo fare, devo dirti che in

97
00:04:55,840 --> 00:04:58,440
‫Mongoose ci sono in realtà due modi per

98
00:04:58,440 --> 00:05:00,120
‫scrivere query di database.

99
00:05:00,120 --> 00:05:03,050
‫Il primo consiste nell'utilizzare l'oggetto filtro

100
00:05:03,050 --> 00:05:06,490
‫proprio come abbiamo fatto nella sezione introduttiva di MongoDB.

101
00:05:06,490 --> 00:05:08,690
‫Destra? Ricordati che?

102
00:05:08,690 --> 00:05:12,333
‫Il secondo modo è usare alcuni metodi speciali di Mangusta.

103
00:05:13,590 --> 00:05:16,505
‫Lascia che te lo mostri, molto velocemente.

104
00:05:16,505 --> 00:05:19,420
‫Con l'oggetto filtro, lo faremmo in questo modo.

105
00:05:19,420 --> 00:05:21,910
‫Iniziamo con la ricerca qui, e poi lì dentro

106
00:05:21,910 --> 00:05:23,570
‫possiamo passare un oggetto filtro.

107
00:05:23,570 --> 00:05:25,900
‫E l'ho già detto prima.

108
00:05:25,900 --> 00:05:28,410
‫Ancora una volta, funziona esattamente allo stesso

109
00:05:28,410 --> 00:05:30,650
‫modo di una normale query MongoDB.

110
00:05:30,650 --> 00:05:33,160
‫Potremmo ora dire che la durata lo

111
00:05:34,570 --> 00:05:35,657
‫imposta su cinque.

112
00:05:35,657 --> 00:05:36,663
‫E

113
00:05:39,320 --> 00:05:42,253
‫poi, difficoltà, impostalo su facile.

114
00:05:44,300 --> 00:05:47,150
‫Questa è esattamente la stringa di query che avevamo prima,

115
00:05:47,150 --> 00:05:48,960
‫e ora sto codificandola qui solo

116
00:05:48,960 --> 00:05:50,860
‫per mostrarti i due diversi modi di

117
00:05:50,860 --> 00:05:52,423
‫scrivere le query in Mongoose.

118
00:05:53,318 --> 00:05:54,518
‫Proviamo questo.

119
00:05:58,220 --> 00:06:00,453
‫Vedete che ora, otteniamo solo due risultati.

120
00:06:01,290 --> 00:06:03,193
‫Concediamoci un po' di spazio qui.

121
00:06:04,810 --> 00:06:05,760
‫Bene.

122
00:06:05,760 --> 00:06:08,870
‫Vediamo i due risultati e in effetti

123
00:06:08,870 --> 00:06:10,890
‫entrambi hanno una

124
00:06:10,890 --> 00:06:15,890
‫durata di cinque, quindi qui e qui, ed entrambi sono facili.

125
00:06:15,930 --> 00:06:17,443
‫Facile e facile.

126
00:06:18,350 --> 00:06:20,563
‫Quindi il nostro filtro ha funzionato bene.

127
00:06:21,675 --> 00:06:24,710
‫Questo è il primo modo di scrivere una query.

128
00:06:24,710 --> 00:06:27,650
‫Solo il modo normale a cui siamo già abituati, ma

129
00:06:27,650 --> 00:06:29,103
‫c'è un altro modo.

130
00:06:30,790 --> 00:06:32,993
‫Lascia che te lo mostri anche io.

131
00:06:37,570 --> 00:06:39,910
‫Di nuovo, iniziamo esattamente allo stesso modo,

132
00:06:39,910 --> 00:06:41,690
‫ma poi la differenza è

133
00:06:41,690 --> 00:06:44,150
‫che iniziamo a concatenare un metodo speciale di

134
00:06:44,150 --> 00:06:47,523
‫Mongoose per costruire fondamentalmente la query simile a questa che abbiamo.

135
00:06:49,540 --> 00:06:50,563
‫Quindi diciamo,

136
00:06:51,730 --> 00:06:52,563
‫dove

137
00:06:54,910 --> 00:06:55,780
‫la durata

138
00:06:58,840 --> 00:07:00,343
‫è uguale a cinque.

139
00:07:01,810 --> 00:07:03,630
‫Poi anche, dove la

140
00:07:04,710 --> 00:07:06,180
‫difficoltà, che deve

141
00:07:06,180 --> 00:07:08,023
‫essere tra virgolette, è

142
00:07:11,420 --> 00:07:12,253
‫uguale a

143
00:07:13,170 --> 00:07:14,003
‫facile.

144
00:07:17,270 --> 00:07:19,620
‫Questa query qui sarà esattamente la

145
00:07:19,620 --> 00:07:22,500
‫stessa di questa, ma ancora una volta scritta

146
00:07:22,500 --> 00:07:24,740
‫utilizzando metodi speciali di Mongoose.

147
00:07:24,740 --> 00:07:27,240
‫E ci sono ovviamente tantissimi altri metodi.

148
00:07:27,240 --> 00:07:30,980
‫Ad esempio, invece di uguali, possiamo avere meno di, o uguale,

149
00:07:30,980 --> 00:07:34,060
‫o solo meno di, oppure puoi anche ordinare i

150
00:07:34,060 --> 00:07:37,520
‫risultati o limitare il numero di risultati, e davvero tutti

151
00:07:37,520 --> 00:07:39,020
‫i tipi di cose.

152
00:07:41,057 --> 00:07:43,180
‫Di sicuro, ne useremo alcuni nei

153
00:07:43,180 --> 00:07:44,743
‫prossimi due video.

154
00:07:46,050 --> 00:07:48,290
‫Questo potrebbe sembrare un po' strano qui per

155
00:07:48,290 --> 00:07:51,303
‫te, ma in realtà è molto, molto utile in alcuni casi.

156
00:07:52,530 --> 00:07:55,573
‫Solo per testare, prova di nuovo con questo.

157
00:07:57,010 --> 00:07:59,953
‫E infatti otteniamo i nostri stessi due risultati.

158
00:08:02,735 --> 00:08:04,590
‫Ora, lasciatemi commentare questo qui fuori.

159
00:08:04,590 --> 00:08:06,950
‫Lo lascerò qui solo come

160
00:08:06,950 --> 00:08:10,300
‫riferimento, perché in questo momento useremo questo metodo qui.

161
00:08:10,300 --> 00:08:12,400
‫E lo useremo, perché in

162
00:08:12,400 --> 00:08:15,000
‫realtà abbiamo già un oggetto che assomiglia

163
00:08:15,000 --> 00:08:16,363
‫molto a questo.

164
00:08:17,360 --> 00:08:20,300
‫E questa è richiesta dot query.

165
00:08:20,300 --> 00:08:22,193
‫Se lo confronti, questo oggetto,

166
00:08:23,228 --> 00:08:25,128
‫con questo oggetto che vedi quaggiù,

167
00:08:26,280 --> 00:08:28,173
‫sembra esattamente uguale a questo.

168
00:08:30,120 --> 00:08:32,130
‫Per implementare un filtro molto

169
00:08:32,130 --> 00:08:37,130
‫semplice, tutto ciò che dobbiamo fare in questo caso è dire, req dot query.

170
00:08:37,150 --> 00:08:38,793
‫Proviamolo ancora una volta.

171
00:08:39,730 --> 00:08:40,803
‫Sbarazzati di questo qui.

172
00:08:42,650 --> 00:08:46,300
‫E infatti otteniamo esattamente gli stessi due risultati.

173
00:08:46,300 --> 00:08:50,223
‫Ora proviamo solo con la difficoltà impostata su facile.

174
00:08:52,140 --> 00:08:53,993
‫Ora otteniamo quattro risultati.

175
00:08:55,280 --> 00:08:56,700
‫Tutti ovviamente avranno

176
00:08:56,700 --> 00:08:58,463
‫la difficoltà impostata su facile.

177
00:09:00,540 --> 00:09:03,100
‫Il nostro filtro, il nostro filtro di

178
00:09:03,100 --> 00:09:04,880
‫base, ora funziona davvero.

179
00:09:04,880 --> 00:09:06,870
‫Ora, il problema con questa

180
00:09:06,870 --> 00:09:09,650
‫implementazione è che in realtà è troppo semplice.

181
00:09:09,650 --> 00:09:11,690
‫Questo perché, in seguito, avremo

182
00:09:11,690 --> 00:09:13,370
‫altri parametri di query.

183
00:09:13,370 --> 00:09:16,730
‫Ad esempio, sort, per la funzionalità di ordinamento,

184
00:09:16,730 --> 00:09:18,653
‫o page, per l'impaginazione.

185
00:09:19,610 --> 00:09:21,040
‫Dobbiamo assicurarci che

186
00:09:21,040 --> 00:09:24,180
‫non stiamo interrogando per questi nel nostro database.

187
00:09:24,180 --> 00:09:25,883
‫Ad esempio, se

188
00:09:27,360 --> 00:09:29,893
‫aggiungessimo qui, page, uguale a

189
00:09:30,970 --> 00:09:33,993
‫due, ovviamente non otterremmo alcun risultato.

190
00:09:35,130 --> 00:09:36,300
‫Lascia che te lo mostri.

191
00:09:36,300 --> 00:09:38,280
‫E in effetti non otteniamo alcun

192
00:09:38,280 --> 00:09:40,560
‫risultato, perché non c'è nessun documento in questa

193
00:09:40,560 --> 00:09:42,593
‫raccolta in cui page è impostato su due.

194
00:09:43,480 --> 00:09:46,200
‫Vogliamo solo usare questo parametro qui, o

195
00:09:46,200 --> 00:09:49,170
‫questo campo, page, per implementare l'impaginazione e non

196
00:09:49,170 --> 00:09:51,593
‫per interrogare effettivamente il database.

197
00:09:53,450 --> 00:09:54,870
‫Quindi quello che dovremo

198
00:09:54,870 --> 00:09:57,810
‫fare è escludere sostanzialmente questi nomi di campi speciali dalla

199
00:09:57,810 --> 00:10:00,883
‫nostra stringa di query prima di eseguire effettivamente il filtraggio.

200
00:10:02,680 --> 00:10:05,540
‫Ora andiamo avanti e implementiamolo.

201
00:10:05,540 --> 00:10:08,200
‫Quello che faremo è, per

202
00:10:08,200 --> 00:10:12,333
‫prima cosa, creare una copia superficiale dell'oggetto query request dot.

203
00:10:15,690 --> 00:10:17,670
‫Chiamiamolo oggetto query.

204
00:10:17,670 --> 00:10:20,030
‫Qui abbiamo bisogno, davvero, di una copia cartacea.

205
00:10:20,030 --> 00:10:23,560
‫Non possiamo semplicemente fare, request dot query, perché

206
00:10:23,560 --> 00:10:25,570
‫quindi, se elimini

207
00:10:25,570 --> 00:10:28,030
‫qualcosa da questo oggetto, lo

208
00:10:28,030 --> 00:10:30,700
‫elimineremmo anche dall'oggetto query dot req.

209
00:10:30,700 --> 00:10:32,170
‫E questo perché

210
00:10:32,170 --> 00:10:35,260
‫in JavaScript, quando impostiamo una variabile su un altro

211
00:10:35,260 --> 00:10:37,490
‫oggetto, quella nuova variabile sarà fondamentalmente

212
00:10:37,490 --> 00:10:39,683
‫solo un riferimento a quell'oggetto originale.

213
00:10:41,030 --> 00:10:43,770
‫Quindi abbiamo davvero bisogno di una copia cartacea qui.

214
00:10:43,770 --> 00:10:46,310
‫In JavaScript, non c'è davvero un modo

215
00:10:46,310 --> 00:10:49,020
‫integrato per farlo, ma un trucco molto

216
00:10:49,020 --> 00:10:53,520
‫carino che possiamo usare, poiché ES6, è usare, prima, la struttura che

217
00:10:53,520 --> 00:10:55,960
‫usiamo usando punto punto punto.

218
00:10:55,960 --> 00:10:58,270
‫E poi possiamo semplicemente creare un nuovo

219
00:10:58,270 --> 00:10:59,663
‫oggetto da quello.

220
00:11:01,290 --> 00:11:02,123
‫Proprio come questo.

221
00:11:03,260 --> 00:11:05,420
‫Questa strutturazione qui, questi

222
00:11:05,420 --> 00:11:08,683
‫tre punti, fondamentalmente rimuoverà tutti i campi dall'oggetto.

223
00:11:09,860 --> 00:11:11,810
‫Qui con le parentesi graffe,

224
00:11:11,810 --> 00:11:13,990
‫beh, creiamo semplicemente un nuovo oggetto.

225
00:11:13,990 --> 00:11:15,940
‫Quindi abbiamo un nuovo oggetto

226
00:11:15,940 --> 00:11:18,070
‫che fondamentalmente conterrà tutte le coppie di

227
00:11:18,070 --> 00:11:21,053
‫valori chiave che erano nel nostro oggetto query req dot.

228
00:11:23,020 --> 00:11:24,330
‫Quindi questa è una copia.

229
00:11:24,330 --> 00:11:26,450
‫Ora creiamo un array di

230
00:11:26,450 --> 00:11:28,633
‫tutti i campi che vogliamo escludere.

231
00:11:31,610 --> 00:11:34,040
‫Lo chiamo campi esclusi.

232
00:11:34,040 --> 00:11:37,090
‫E poi vogliamo escludere la pagina, quindi è quella

233
00:11:37,090 --> 00:11:38,400
‫che ti ho

234
00:11:38,400 --> 00:11:40,250
‫appena detto prima in Postman.

235
00:11:40,250 --> 00:11:42,150
‫Quindi, vogliamo anche escludere

236
00:11:43,170 --> 00:11:44,440
‫l'ordinamento, vogliamo

237
00:11:44,440 --> 00:11:46,053
‫escludere il limite

238
00:11:47,890 --> 00:11:50,533
‫e vogliamo escludere i campi.

239
00:11:52,160 --> 00:11:54,940
‫Implementeremo tutte le funzionalità di paging,

240
00:11:54,940 --> 00:11:58,210
‫ordinamento, limitazione e selezione solo di alcuni

241
00:11:58,210 --> 00:12:01,140
‫campi specifici, più avanti nei prossimi

242
00:12:01,140 --> 00:12:02,690
‫due video.

243
00:12:03,750 --> 00:12:05,900
‫Successivamente, ciò che dobbiamo fare

244
00:12:05,900 --> 00:12:08,610
‫è rimuovere sostanzialmente tutti questi campi dal

245
00:12:08,610 --> 00:12:10,230
‫nostro oggetto query.

246
00:12:10,230 --> 00:12:11,690
‫E per farlo,

247
00:12:11,690 --> 00:12:13,523
‫faremo un giro su questi campi.

248
00:12:14,660 --> 00:12:15,860
‫Quindi, campi

249
00:12:17,690 --> 00:12:19,070
‫esclusi per ciascuno.

250
00:12:19,070 --> 00:12:20,390
‫E stiamo usando per

251
00:12:20,390 --> 00:12:22,423
‫ciascuno perché non vogliamo salvare un nuovo array.

252
00:12:24,150 --> 00:12:25,840
‫Quindi ognuno di questi

253
00:12:25,840 --> 00:12:27,863
‫elementi, possiamo usare l'operatore di cancellazione.

254
00:12:30,930 --> 00:12:32,530
‫E poi

255
00:12:32,530 --> 00:12:34,730
‫dall'oggetto query, vogliamo eliminare il

256
00:12:34,730 --> 00:12:36,700
‫campo con il nome

257
00:12:36,700 --> 00:12:38,820
‫dell'elemento, quindi l'elemento corrente nell'array.

258
00:12:38,820 --> 00:12:42,340
‫In questo modo, elimineremo prima il campo della pagina,

259
00:12:42,340 --> 00:12:45,563
‫quindi l'ordinamento, quindi il limite, quindi i campi.

260
00:12:46,560 --> 00:12:48,440
‫Naturalmente, solo nel caso in cui sia presente.

261
00:12:48,440 --> 00:12:50,860
‫Se, ad esempio, non è presente alcun

262
00:12:50,860 --> 00:12:54,030
‫campo limite, ovviamente questo non verrà eliminato, perché non

263
00:12:54,030 --> 00:12:55,130
‫è presente.

264
00:12:56,530 --> 00:12:59,233
‫Diamo ora un'occhiata se funziona davvero.

265
00:13:00,380 --> 00:13:02,530
‫Registrerò la query dot req

266
00:13:02,530 --> 00:13:05,723
‫e allo stesso tempo il nostro oggetto query.

267
00:13:08,742 --> 00:13:09,692
‫Dare a questo un salvataggio.

268
00:13:10,600 --> 00:13:12,060
‫Non preoccuparti per i nostri risultati ora.

269
00:13:12,060 --> 00:13:14,190
‫Tutto ciò a cui voglio dare

270
00:13:14,190 --> 00:13:17,080
‫un'occhiata è il nostro oggetto query, solo per assicurarmi

271
00:13:17,080 --> 00:13:19,530
‫che questa logica che abbiamo qui funzioni effettivamente.

272
00:13:21,540 --> 00:13:26,540
‫Aggiungiamo qui una sorta di uno e un limite di 10.

273
00:13:27,260 --> 00:13:29,210
‫Questi avranno più senso in seguito.

274
00:13:29,210 --> 00:13:30,540
‫Per ora, li sto solo

275
00:13:30,540 --> 00:13:32,293
‫aggiungendo, in modo da poterli successivamente escludere.

276
00:13:34,490 --> 00:13:37,120
‫I risultati non contano, tutto ciò che conta

277
00:13:37,120 --> 00:13:40,640
‫è che la nostra query originale sia questa qui, e quindi

278
00:13:40,640 --> 00:13:42,820
‫il nostro oggetto query, che è

279
00:13:42,820 --> 00:13:44,010
‫quello che

280
00:13:44,010 --> 00:13:46,320
‫useremo, ha solo difficoltà impostata su facile.

281
00:13:46,320 --> 00:13:49,723
‫Questo perché abbiamo escluso, pagina, ordinamento e limite.

282
00:13:51,000 --> 00:13:53,460
‫Ora funziona, quindi invece di usare

283
00:13:53,460 --> 00:13:57,033
‫la query dot req, useremo il nostro oggetto query.

284
00:13:59,390 --> 00:14:03,000
‫Eliminiamolo e riproviamo.

285
00:14:03,000 --> 00:14:05,080
‫Ora dovremmo tornare a

286
00:14:05,080 --> 00:14:07,180
‫interrogare tutti i documenti che hanno

287
00:14:07,180 --> 00:14:11,473
‫una difficoltà impostata su facile e ignorare tutti questi altri campi.

288
00:14:13,256 --> 00:14:14,150
‫Invia quello.

289
00:14:14,150 --> 00:14:15,930
‫E infatti, siamo tornati

290
00:14:15,930 --> 00:14:18,623
‫ai nostri quattro risultati che avevamo prima.

291
00:14:19,900 --> 00:14:22,610
‫Possiamo anche attivare la durata, e infatti

292
00:14:22,610 --> 00:14:24,743
‫ora avremo due risultati.

293
00:14:26,110 --> 00:14:27,180
‫Ricordati che?

294
00:14:27,180 --> 00:14:28,643
‫E se li spegniamo,

295
00:14:29,960 --> 00:14:32,380
‫beh, allora ovviamente funzionerà allo stesso modo.

296
00:14:32,380 --> 00:14:34,330
‫Cancelliamo semplicemente questa riga vuota qui.

297
00:14:36,740 --> 00:14:40,340
‫E così, in effetti, con la nostra stringa di query originale, le

298
00:14:40,340 --> 00:14:42,693
‫cose ovviamente funzionavano ancora allo stesso modo.

299
00:14:44,220 --> 00:14:47,630
‫Abbiamo preparato la nostra funzione di filtro in

300
00:14:47,630 --> 00:14:51,410
‫modo che ignori i campi pagina, ordinamento e limite.

301
00:14:51,410 --> 00:14:53,450
‫Ma in realtà c'è

302
00:14:53,450 --> 00:14:56,210
‫qualcos'altro che dobbiamo fare nel nostro

303
00:14:56,210 --> 00:14:59,753
‫codice, per poter implementare queste funzionalità nei video futuri.

304
00:15:01,360 --> 00:15:03,250
‫Torniamo qui al nostro codice.

305
00:15:03,250 --> 00:15:04,570
‫Quindi ora impariamo un

306
00:15:04,570 --> 00:15:07,093
‫po' come funzionano effettivamente le query in Mongoose.

307
00:15:08,220 --> 00:15:09,910
‫Penso di averlo

308
00:15:09,910 --> 00:15:13,400
‫menzionato prima, ma è molto importante parlarne di nuovo.

309
00:15:13,400 --> 00:15:16,943
‫Questo metodo di ricerca qui restituirà una query.

310
00:15:18,060 --> 00:15:20,430
‫Tutto questo qui restituirà una query.

311
00:15:20,430 --> 00:15:22,410
‫E questo è il motivo

312
00:15:22,410 --> 00:15:24,840
‫per cui possiamo concatenare altri metodi come questo.

313
00:15:24,840 --> 00:15:28,630
‫Come dove, uguali e tutti questi altri metodi di

314
00:15:28,630 --> 00:15:30,770
‫cui ti ho parlato prima.

315
00:15:30,770 --> 00:15:33,770
‫Lascia che te lo mostri di nuovo nella documentazione.

316
00:15:37,670 --> 00:15:40,170
‫Qui abbiamo l'oggetto query e,

317
00:15:40,170 --> 00:15:42,710
‫ancora una volta, quando usiamo il

318
00:15:42,710 --> 00:15:46,590
‫metodo find, restituirà un oggetto che è una query.

319
00:15:46,590 --> 00:15:48,310
‫Quindi in query dot

320
00:15:48,310 --> 00:15:50,180
‫prototipo, abbiamo quindi tutti questi metodi.

321
00:15:50,180 --> 00:15:52,820
‫Ad esempio, qui sotto abbiamo dove, che

322
00:15:52,820 --> 00:15:54,040
‫ho appena menzionato.

323
00:15:54,040 --> 00:15:55,790
‫Abbiamo l'ordinamento che è

324
00:15:55,790 --> 00:15:58,120
‫quello che useremo in seguito per l'ordinamento.

325
00:15:58,120 --> 00:16:00,870
‫Abbiamo, vediamo, abbiamo minore

326
00:16:00,870 --> 00:16:03,740
‫o minore di uguale, abbiamo maggiore.

327
00:16:03,740 --> 00:16:05,260
‫Abbiamo...

328
00:16:05,260 --> 00:16:06,700
‫Cos'altro abbiamo usato?

329
00:16:06,700 --> 00:16:08,070
‫Abbiamo usato uguali.

330
00:16:08,070 --> 00:16:11,310
‫Tutti questi fanno parte del prototipo del punto di query.

331
00:16:11,310 --> 00:16:13,920
‫Che, ancora una volta, si riferisce agli

332
00:16:13,920 --> 00:16:16,783
‫oggetti che stiamo creando usando la classe query.

333
00:16:19,613 --> 00:16:21,410
‫Di nuovo, questo è il

334
00:16:21,410 --> 00:16:24,070
‫motivo per cui possiamo fare questo tipo di concatenamento.

335
00:16:24,070 --> 00:16:26,290
‫Ora viene la parte importante.

336
00:16:26,290 --> 00:16:28,350
‫Non appena attendiamo effettivamente

337
00:16:28,350 --> 00:16:30,970
‫il risultato della query, non appena

338
00:16:30,970 --> 00:16:33,950
‫utilizziamo wait qui o qui, ad esempio.

339
00:16:33,950 --> 00:16:35,890
‫Non appena usiamo questo wait,

340
00:16:35,890 --> 00:16:37,910
‫la query verrà eseguita e

341
00:16:37,910 --> 00:16:39,610
‫tornerà con i

342
00:16:39,610 --> 00:16:42,144
‫documenti che corrispondono effettivamente alla nostra query.

343
00:16:42,144 --> 00:16:44,960
‫Se lo facciamo in questo modo, come abbiamo fatto

344
00:16:44,960 --> 00:16:46,730
‫qui, ora c'è un modo

345
00:16:46,730 --> 00:16:49,110
‫per implementare, in seguito, l'ordinamento, l'impaginazione o

346
00:16:49,110 --> 00:16:50,793
‫tutte queste altre funzionalità.

347
00:16:51,880 --> 00:16:53,870
‫Invece, quello che dovremo

348
00:16:53,870 --> 00:16:57,220
‫fare è salvare questa parte qui in una query, quindi

349
00:16:57,220 --> 00:17:00,200
‫alla fine, non appena cambiamo tutti i metodi nella

350
00:17:00,200 --> 00:17:02,440
‫query di cui abbiamo bisogno, solo

351
00:17:02,440 --> 00:17:04,863
‫allora alla fine, possiamo aspettare che interrogazione.

352
00:17:06,080 --> 00:17:08,600
‫Ad esempio, utilizzeremo il metodo sort.

353
00:17:08,600 --> 00:17:10,200
‫Useremo il metodo

354
00:17:10,200 --> 00:17:12,440
‫predict, useremo il metodo limit e

355
00:17:12,440 --> 00:17:14,500
‫useremo, davvero, un mucchio di metodi

356
00:17:14,500 --> 00:17:16,620
‫e li concateneremo a questa query.

357
00:17:16,620 --> 00:17:18,110
‫Sarebbe impossibile farlo,

358
00:17:18,110 --> 00:17:20,910
‫di nuovo, se aspettiamo il risultato di

359
00:17:20,910 --> 00:17:23,073
‫questa query iniziale qui, subito.

360
00:17:24,590 --> 00:17:26,470
‫Spero che abbia avuto senso.

361
00:17:26,470 --> 00:17:28,660
‫Il modo in cui lo

362
00:17:28,660 --> 00:17:30,140
‫faremo è

363
00:17:31,090 --> 00:17:33,473
‫che faremo i nostri tour quaggiù.

364
00:17:35,540 --> 00:17:37,623
‫E questo attenderà la domanda.

365
00:17:41,310 --> 00:17:43,830
‫La query è, beh, semplicemente la

366
00:17:43,830 --> 00:17:45,533
‫query senza attendere.

367
00:17:47,460 --> 00:17:49,360
‫Giusto per renderlo coerente con questa

368
00:17:49,360 --> 00:17:50,363
‫parte qui,

369
00:17:52,060 --> 00:17:53,163
‫facciamolo in questo modo.

370
00:17:55,603 --> 00:17:57,123
‫Diciamo che,

371
00:17:58,540 --> 00:18:00,437
‫prima, costruiamo la

372
00:18:00,437 --> 00:18:03,363
‫query e poi eseguiamo la query.

373
00:18:07,290 --> 00:18:08,313
‫Non è corretto.

374
00:18:11,490 --> 00:18:13,040
‫Dato che qui stiamo facendo

375
00:18:13,040 --> 00:18:14,330
‫commenti, diciamo anche

376
00:18:15,300 --> 00:18:16,790
‫di inviare una risposta.

377
00:18:16,790 --> 00:18:20,023
‫Giusto per rendere il nostro codice un po' più facile da scansionare.

378
00:18:20,870 --> 00:18:22,380
‫Spero che tutto

379
00:18:22,380 --> 00:18:24,820
‫questo abbia avuto un senso, questo si

380
00:18:24,820 --> 00:18:26,780
‫è rivelato un video piuttosto

381
00:18:26,780 --> 00:18:29,356
‫lungo, ma era importante finire questa parte qui

382
00:18:29,356 --> 00:18:31,830
‫spiegandovi questa logica qui, in modo che

383
00:18:31,830 --> 00:18:34,080
‫nei prossimi video saremo quindi in grado

384
00:18:34,080 --> 00:18:36,110
‫di implementare il resto delle caratteristiche.

385
00:18:36,110 --> 00:18:37,940
‫Perché, ancora una volta,

386
00:18:37,940 --> 00:18:39,983
‫senza averlo così, non funzionerebbe.

