﻿1
00:00:01,090 --> 00:00:03,300
‫Istruttore: Come funzione successiva nella nostra API,

2
00:00:03,300 --> 00:00:04,910
‫abbiamo la limitazione dei

3
00:00:04,910 --> 00:00:07,290
‫campi, quindi, in pratica, per consentire ai

4
00:00:07,290 --> 00:00:08,900
‫clienti di scegliere quali

5
00:00:08,900 --> 00:00:10,543
‫campi vogliono recuperare nella risposta.

6
00:00:11,960 --> 00:00:14,530
‫Quindi, per un cliente, è sempre l'ideale ricevere

7
00:00:14,530 --> 00:00:16,980
‫il minor numero di dati possibile, al

8
00:00:16,980 --> 00:00:19,170
‫fine di ridurre la larghezza

9
00:00:19,170 --> 00:00:21,890
‫di banda che viene consumata con ogni richiesta.

10
00:00:21,890 --> 00:00:23,890
‫E questo è, ovviamente,

11
00:00:23,890 --> 00:00:27,650
‫particolarmente vero quando abbiamo set di dati davvero pesanti, giusto?

12
00:00:27,650 --> 00:00:29,470
‫E quindi è una

13
00:00:29,470 --> 00:00:33,793
‫funzionalità molto utile consentire all'utente dell'API di richiedere solo alcuni dei campi.

14
00:00:36,470 --> 00:00:41,323
‫Quindi, come terza caratteristica, avremo la limitazione del campo.

15
00:00:42,460 --> 00:00:45,280
‫E, proprio come prima, lascia che inizi

16
00:00:45,280 --> 00:00:47,823
‫mostrandoti come funzionerà qui a Postman.

17
00:00:49,130 --> 00:00:53,083
‫Quindi, specificheremo un campo chiamato campi e quindi il

18
00:00:53,083 --> 00:00:54,710
‫nome dei campi

19
00:00:54,710 --> 00:00:56,810
‫che vogliamo effettivamente ricevere.

20
00:00:56,810 --> 00:00:58,853
‫Quindi diciamo che vogliamo

21
00:01:00,720 --> 00:01:01,773
‫solo il

22
00:01:03,570 --> 00:01:08,570
‫nome, la durata, la difficoltà e il prezzo, va bene.

23
00:01:08,600 --> 00:01:11,580
‫E così, l'implementazione sarà in realtà molto simile a quella

24
00:01:11,580 --> 00:01:13,513
‫che abbiamo fatto prima con l'ordinamento.

25
00:01:14,860 --> 00:01:19,417
‫Quindi, se richiesto. interrogazione. field, quindi creiamo

26
00:01:22,400 --> 00:01:24,270
‫di nuovo una variabile

27
00:01:24,270 --> 00:01:28,310
‫per questi campi qui perché proprio come prima, Mongodbs, in

28
00:01:28,310 --> 00:01:30,610
‫realtà richiede una stringa con il

29
00:01:30,610 --> 00:01:34,100
‫nome del campo separato da spazi, va bene?

30
00:01:34,100 --> 00:01:36,100
‫Ora lasciami iniziare

31
00:01:36,100 --> 00:01:40,883
‫scrivendo quella parte, ok, quindi, la query stessa.

32
00:01:41,770 --> 00:01:45,887
‫Quindi query è uguale a query. seleziona, ok?

33
00:01:48,710 --> 00:01:51,740
‫E qui, ad esempio, si aspetta una

34
00:01:51,740 --> 00:01:56,740
‫stringa come, nome poi spazio, durata e un prezzo per esempio, ok.

35
00:01:59,420 --> 00:02:01,540
‫E quindi in questo modo,

36
00:02:01,540 --> 00:02:04,070
‫selezionerà solo questi tre nomi di campo

37
00:02:04,070 --> 00:02:07,020
‫e invierà il risultato che contiene solo quello, ok?

38
00:02:07,020 --> 00:02:09,150
‫E in realtà, questa operazione

39
00:02:09,150 --> 00:02:14,150
‫di selezione solo di determinati nomi di campo si chiama proiezione okay?

40
00:02:14,720 --> 00:02:17,110
‫Quindi, ora andiamo avanti

41
00:02:17,110 --> 00:02:21,930
‫e creiamo fondamentalmente la stringa, proprio come abbiamo fatto lassù, okay.

42
00:02:21,930 --> 00:02:26,930
‫Quindi iniziamo con req. interrogazione. campi, quindi lo dividiamo con

43
00:02:28,047 --> 00:02:29,663
‫una virgola e lo

44
00:02:30,840 --> 00:02:32,490
‫uniamo con una stringa vuota.

45
00:02:33,800 --> 00:02:36,570
‫Con uno spazio in realtà, mi dispiace.

46
00:02:36,570 --> 00:02:38,590
‫Quindi con lo spazio e

47
00:02:38,590 --> 00:02:42,683
‫quindi questo è, quindi, produrremo questa stringa esatta con questo formato esatto.

48
00:02:44,160 --> 00:02:47,033
‫Quindi qui, tutto ciò che dobbiamo fare è usare questi campi.

49
00:02:49,490 --> 00:02:53,150
‫Quindi, proprio come prima, voglio anche

50
00:02:53,150 --> 00:02:57,280
‫aggiungere un valore predefinito, quindi nel caso in

51
00:02:57,280 --> 00:03:01,240
‫cui l'utente non specifichi il campo dei

52
00:03:03,230 --> 00:03:08,230
‫campi, ok, quindi, in tal caso, rimuoveremo effettivamente qualcosa, ok?

53
00:03:08,540 --> 00:03:12,870
‫E lascia che te lo mostri prima, quindi qui sotto,

54
00:03:12,870 --> 00:03:16,880
‫abbiamo sempre questo trattino basso di sottolineatura V, che

55
00:03:16,880 --> 00:03:21,000
‫è impostato su zero, e Mongodbs crea questi campi solo

56
00:03:21,000 --> 00:03:23,020
‫perché li usa internamente.

57
00:03:23,020 --> 00:03:25,850
‫E potremmo disabilitarli, ma non è una buona pratica.

58
00:03:25,850 --> 00:03:29,094
‫Di nuovo, perché Mongodbs in realtà li usa, va bene,

59
00:03:29,094 --> 00:03:31,530
‫ma quello che possiamo fare è

60
00:03:31,530 --> 00:03:34,725
‫praticamente non inviarli mai al cliente, quindi possiamo escluderli.

61
00:03:34,725 --> 00:03:38,470
‫E il modo in cui lo facciamo è, invece di

62
00:03:38,470 --> 00:03:41,290
‫fare il underscore underscore V come prima,

63
00:03:41,290 --> 00:03:43,320
‫quindi come abbiamo fatto qui,

64
00:03:43,320 --> 00:03:46,490
‫in pratica, lo precediamo con un meno, ok?

65
00:03:46,490 --> 00:03:49,860
‫E meno è quindi non includere, ma escludere.

66
00:03:49,860 --> 00:03:51,690
‫Quindi quello che avevamo di

67
00:03:51,690 --> 00:03:53,900
‫nuovo qui, con il nome, la durata

68
00:03:53,900 --> 00:03:56,890
‫e il prezzo, era includere questi campi nella risposta.

69
00:03:56,890 --> 00:03:58,580
‫Ma in questo modo,

70
00:03:58,580 --> 00:04:02,560
‫con il meno, abbiamo tutto tranne il campo V qui, ok?

71
00:04:02,560 --> 00:04:05,903
‫Quindi escludiamo solo questo campo, ok?

72
00:04:07,060 --> 00:04:08,660
‫Quindi andiamo avanti e testiamolo.

73
00:04:09,870 --> 00:04:14,870
‫Invialo e aspettiamo e sì, in effetti così, l'ID

74
00:04:15,430 --> 00:04:18,250
‫è predefinito, sempre incluso, ok?

75
00:04:18,250 --> 00:04:21,140
‫Quindi non possiamo rimuoverlo, ma oltre a questo,

76
00:04:21,140 --> 00:04:24,700
‫abbiamo solo il nome, la durata, la difficoltà e

77
00:04:24,700 --> 00:04:28,360
‫il prezzo, ok, e potremmo, ovviamente, usare anche quel meno

78
00:04:28,360 --> 00:04:31,070
‫in modo che l'esclusione anche qui.

79
00:04:31,070 --> 00:04:33,570
‫Quindi potremmo avere tutto, meno il nome e

80
00:04:33,570 --> 00:04:35,653
‫meno la durata, per esempio.

81
00:04:38,280 --> 00:04:40,200
‫Quindi proviamo anche quello.

82
00:04:40,200 --> 00:04:44,160
‫E quindi, se ora lo controlli, non vedrai il nome e non

83
00:04:44,160 --> 00:04:46,853
‫vedrai la durata da nessuna parte qui.

84
00:04:48,635 --> 00:04:50,690
‫Bene, e ora solo come

85
00:04:50,690 --> 00:04:53,670
‫test finale, vediamo se anche il nostro default funziona.

86
00:04:53,670 --> 00:04:56,930
‫Invio della risposta e così, ora non abbiamo

87
00:04:56,930 --> 00:05:01,410
‫più quella variabile V qui impostata a zero in tutti i documenti.

88
00:05:01,410 --> 00:05:04,840
‫Bene, bene, ora c'è un'ultima cosa che voglio mostrarti

89
00:05:04,840 --> 00:05:06,520
‫che è che

90
00:05:06,520 --> 00:05:09,950
‫possiamo anche escludere i campi direttamente dallo schema.

91
00:05:09,950 --> 00:05:11,680
‫Va bene, e questo può essere

92
00:05:11,680 --> 00:05:13,573
‫molto utile, ad esempio, quando disponiamo di

93
00:05:13,573 --> 00:05:15,720
‫dati sensibili che dovrebbero essere utilizzati solo internamente.

94
00:05:15,720 --> 00:05:17,261
‫Ad esempio, cose

95
00:05:17,261 --> 00:05:19,750
‫come le password non dovrebbero mai essere esposte

96
00:05:19,750 --> 00:05:21,320
‫al client e quindi, possiamo

97
00:05:21,320 --> 00:05:23,372
‫escludere alcuni campi direttamente nello schema.

98
00:05:23,372 --> 00:05:26,320
‫Quindi, ad esempio, potremmo non volere che

99
00:05:26,320 --> 00:05:29,780
‫l'utente veda esattamente quando è stato creato ogni tour.

100
00:05:29,780 --> 00:05:31,950
‫Ad esempio, tour potrebbe essere

101
00:05:31,950 --> 00:05:34,020
‫già un po'

102
00:05:34,020 --> 00:05:38,320
‫vecchio o qualcosa del genere e quindi, diciamo che vogliamo sempre

103
00:05:38,320 --> 00:05:40,753
‫nascondere questo campo createdAt, va bene,

104
00:05:42,050 --> 00:05:44,800
‫così possiamo andare nel nostro schema,

105
00:05:44,800 --> 00:05:47,950
‫che è ovviamente nel modello tour, e poi

106
00:05:47,950 --> 00:05:52,023
‫in createdAt, qui impostiamo semplicemente la proprietà select su false.

107
00:05:54,050 --> 00:05:58,090
‫E ora, quando proviamo a ottenere i nostri risultati, vedi che

108
00:05:58,090 --> 00:06:00,490
‫in realtà non c'è più, ok?

109
00:06:02,090 --> 00:06:03,460
‫E così,

110
00:06:03,460 --> 00:06:06,690
‫in pratica, possiamo nasconderlo in modo permanente dall'output.

111
00:06:06,690 --> 00:06:11,110
‫Perfetto, quindi un'altra funzionalità che funziona effettivamente ora e quindi

112
00:06:11,110 --> 00:06:13,723
‫passiamo ora a quella successiva.

