‫Istruttore: Come funzione successiva nella nostra API,
‫abbiamo la limitazione dei
‫campi, quindi, in pratica, per consentire ai
‫clienti di scegliere quali
‫campi vogliono recuperare nella risposta.
‫Quindi, per un cliente, è sempre l'ideale ricevere
‫il minor numero di dati possibile, al
‫fine di ridurre la larghezza
‫di banda che viene consumata con ogni richiesta.
‫E questo è, ovviamente,
‫particolarmente vero quando abbiamo set di dati davvero pesanti, giusto?
‫E quindi è una
‫funzionalità molto utile consentire all'utente dell'API di richiedere solo alcuni dei campi.
‫Quindi, come terza caratteristica, avremo la limitazione del campo.
‫E, proprio come prima, lascia che inizi
‫mostrandoti come funzionerà qui a Postman.
‫Quindi, specificheremo un campo chiamato campi e quindi il
‫nome dei campi
‫che vogliamo effettivamente ricevere.
‫Quindi diciamo che vogliamo
‫solo il
‫nome, la durata, la difficoltà e il prezzo, va bene.
‫E così, l'implementazione sarà in realtà molto simile a quella
‫che abbiamo fatto prima con l'ordinamento.
‫Quindi, se richiesto. interrogazione. field, quindi creiamo
‫di nuovo una variabile
‫per questi campi qui perché proprio come prima, Mongodbs, in
‫realtà richiede una stringa con il
‫nome del campo separato da spazi, va bene?
‫Ora lasciami iniziare
‫scrivendo quella parte, ok, quindi, la query stessa.
‫Quindi query è uguale a query. seleziona, ok?
‫E qui, ad esempio, si aspetta una
‫stringa come, nome poi spazio, durata e un prezzo per esempio, ok.
‫E quindi in questo modo,
‫selezionerà solo questi tre nomi di campo
‫e invierà il risultato che contiene solo quello, ok?
‫E in realtà, questa operazione
‫di selezione solo di determinati nomi di campo si chiama proiezione okay?
‫Quindi, ora andiamo avanti
‫e creiamo fondamentalmente la stringa, proprio come abbiamo fatto lassù, okay.
‫Quindi iniziamo con req. interrogazione. campi, quindi lo dividiamo con
‫una virgola e lo
‫uniamo con una stringa vuota.
‫Con uno spazio in realtà, mi dispiace.
‫Quindi con lo spazio e
‫quindi questo è, quindi, produrremo questa stringa esatta con questo formato esatto.
‫Quindi qui, tutto ciò che dobbiamo fare è usare questi campi.
‫Quindi, proprio come prima, voglio anche
‫aggiungere un valore predefinito, quindi nel caso in
‫cui l'utente non specifichi il campo dei
‫campi, ok, quindi, in tal caso, rimuoveremo effettivamente qualcosa, ok?
‫E lascia che te lo mostri prima, quindi qui sotto,
‫abbiamo sempre questo trattino basso di sottolineatura V, che
‫è impostato su zero, e Mongodbs crea questi campi solo
‫perché li usa internamente.
‫E potremmo disabilitarli, ma non è una buona pratica.
‫Di nuovo, perché Mongodbs in realtà li usa, va bene,
‫ma quello che possiamo fare è
‫praticamente non inviarli mai al cliente, quindi possiamo escluderli.
‫E il modo in cui lo facciamo è, invece di
‫fare il underscore underscore V come prima,
‫quindi come abbiamo fatto qui,
‫in pratica, lo precediamo con un meno, ok?
‫E meno è quindi non includere, ma escludere.
‫Quindi quello che avevamo di
‫nuovo qui, con il nome, la durata
‫e il prezzo, era includere questi campi nella risposta.
‫Ma in questo modo,
‫con il meno, abbiamo tutto tranne il campo V qui, ok?
‫Quindi escludiamo solo questo campo, ok?
‫Quindi andiamo avanti e testiamolo.
‫Invialo e aspettiamo e sì, in effetti così, l'ID
‫è predefinito, sempre incluso, ok?
‫Quindi non possiamo rimuoverlo, ma oltre a questo,
‫abbiamo solo il nome, la durata, la difficoltà e
‫il prezzo, ok, e potremmo, ovviamente, usare anche quel meno
‫in modo che l'esclusione anche qui.
‫Quindi potremmo avere tutto, meno il nome e
‫meno la durata, per esempio.
‫Quindi proviamo anche quello.
‫E quindi, se ora lo controlli, non vedrai il nome e non
‫vedrai la durata da nessuna parte qui.
‫Bene, e ora solo come
‫test finale, vediamo se anche il nostro default funziona.
‫Invio della risposta e così, ora non abbiamo
‫più quella variabile V qui impostata a zero in tutti i documenti.
‫Bene, bene, ora c'è un'ultima cosa che voglio mostrarti
‫che è che
‫possiamo anche escludere i campi direttamente dallo schema.
‫Va bene, e questo può essere
‫molto utile, ad esempio, quando disponiamo di
‫dati sensibili che dovrebbero essere utilizzati solo internamente.
‫Ad esempio, cose
‫come le password non dovrebbero mai essere esposte
‫al client e quindi, possiamo
‫escludere alcuni campi direttamente nello schema.
‫Quindi, ad esempio, potremmo non volere che
‫l'utente veda esattamente quando è stato creato ogni tour.
‫Ad esempio, tour potrebbe essere
‫già un po'
‫vecchio o qualcosa del genere e quindi, diciamo che vogliamo sempre
‫nascondere questo campo createdAt, va bene,
‫così possiamo andare nel nostro schema,
‫che è ovviamente nel modello tour, e poi
‫in createdAt, qui impostiamo semplicemente la proprietà select su false.
‫E ora, quando proviamo a ottenere i nostri risultati, vedi che
‫in realtà non c'è più, ok?
‫E così,
‫in pratica, possiamo nasconderlo in modo permanente dall'output.
‫Perfetto, quindi un'altra funzionalità che funziona effettivamente ora e quindi
‫passiamo ora a quella successiva.