‫Jonas: Quindi abbiamo imparato a
‫conoscere il middleware Document e query, e ora
‫l'ultimo middleware di cui parleremo è il middleware di
‫aggregazione e, come puoi
‫immaginare, il middleware di aggregazione
‫ci consente di aggiungere hook prima o dopo che si
‫verifica un'aggregazione, e
‫quindi ora continuiamo effettivamente con il nostro esempio precedente in cui
‫abbiamo nascosto i tour segreti dalle query, ora in un'aggregazione
‫i tour segreti vengono ancora utilizzati, giusto?
‫Quindi confermiamo rapidamente che
‫in realtà, ad esempio qui nelle nostre statistiche sui
‫tour, quindi è lì che abbiamo usato
‫la prima aggregazione e quindi vedi che
‫abbiamo quattro tour qui, quattro in facile e
‫tre in medio e quindi questo fa 11 ma abbiamo
‫già sappi che in realtà vogliamo solo 10 tour.
‫Quindi ci sono 10 tour che non
‫sono segreti e uno che è segreto, quindi ora
‫abbiamo tutti questi 11 tour qui e quindi
‫fondamentalmente vogliamo anche escludere il tour segreto nell'aggregazione.
‫Quindi come potremmo farlo?
‫Bene, diamo un'occhiata a dove
‫sta effettivamente accadendo la nostra aggregazione, quindi è quaggiù, sì, quindi nei passaggi
‫del tour, e quindi quello che potremmo fare qui in questo
‫stato di partita è semplicemente escludere i tour segreti
‫che sono veri, giusto?
‫Quindi sarebbe abbastanza facile da
‫aggiungere qui, ma poi dovremmo aggiungere
‫la stessa cosa quaggiù nell'altra aggregazione che
‫abbiamo, e se avessimo ancora più
‫aggregazioni dovremmo aggiungerla in tutte e questo è
‫ovviamente non è una buona idea,
‫perché ad esempio potremmo dimenticarci di farlo ed è
‫anche solo codice ripetitivo e quindi escludiamolo semplicemente a livello di modello,
‫va bene quindi aggiungiamo il middleware di aggregazione qui iniziando con
‫un commento.
‫Quindi middleware di aggregazione e così, proprio come
‫prima, abbiamo tourSchema. pre quindi vogliamo che ciò accada
‫prima che l'aggregazione venga
‫effettivamente eseguita e quindi qui usiamo l'hook aggregati.
‫Va bene e poi la nostra funzione che
‫accetta di nuovo la funzione successiva, chiamando così il prossimo middleware.
‫Bene, iniziamo dando un'occhiata a questo, quindi ricorda che
‫qui nel middleware delle query che questo oggetto
‫punta alla query corrente.
‫Quindi qui nel middleware del documento questo
‫oggetto punta al documento
‫corrente, e quindi qui nel middleware di
‫aggregazione questo punterà all'oggetto di aggregazione corrente.
‫Ok, quindi diamo un'occhiata a questo
‫nella console, ma prima lasciami rimuovere questo registro qui.
‫Va bene salvalo, esegui questa aggregazione qui e ci
‫vuole molto tempo, quindi annulliamolo e torniamo indietro
‫e probabilmente è perché non stiamo
‫chiamando il prossimo qui, e quindi come sappiamo già che rimaniamo
‫bloccati nella funzione
‫middleware e quindi non va bene.
‫Quindi proviamo di nuovo ora send,
‫e sì, ora siamo tornati e ora diamo
‫un'occhiata all'oggetto di aggregazione.
‫Ok, ci sono un sacco
‫di cose qui, quindi non è molto interessante qui e non
‫riesco davvero a trovare quello che sto cercando di
‫mostrarti qui e quindi aggiungiamo semplicemente questo. pipeline va bene perché
‫quello che volevo mostrarti è solo l'oggetto pipeline.
‫Ok, e in realtà è una pipeline come questa, quindi in
‫realtà è una funzione, un metodo.
‫Quindi puliamo la console qui.
‫Prova di nuovo, e così qui otteniamo la pipeline di aggregazione, e
‫quindi questo è semplicemente l'array che abbiamo passato
‫alla funzione di aggregazione prima.
‫Bene, diamo un'occhiata e quindi
‫qui abbiamo quell'array, questo non questo.
‫Quindi abbiamo la corrispondenza
‫per raggruppare e poi l'ordinamento, quindi se diamo
‫un'occhiata qui alla console abbiamo effettivamente la nostra corrispondenza con la
‫media delle valutazioni, abbiamo gruppo e poi ordinamento.
‫Quindi questa è esattamente la pipeline che abbiamo specificato prima,
‫e quindi ora per filtrare i tour segreti tutto
‫ciò che dobbiamo fare è aggiungere un'altra fase di
‫corrispondenza proprio all'inizio di questo array
‫di pipeline, giusto e quindi facciamo proprio questo.
‫Quindi facciamolo qui prima di
‫questo registro, quindi questo. pipeline e ricorda che questo è un array
‫e come aggiungiamo un elemento all'inizio di
‫un array?
‫Usiamo unshift e quindi questo è un metodo JavaScript
‫standard per gli array ok, abbiamo anche shift da aggiungere alla
‫fine dell'array e unshift all'inizio dell'array, e quindi
‫di nuovo quello che vogliamo aggiungere qui ora
‫è aggiungere solo un altro stadio, quindi molto simile a quello
‫che abbiamo quaggiù.
‫Quindi match e poi secretTour, non uguale a vero.
‫Dagli un salvataggio, e quindi questo pezzo di codice qui fondamentalmente è
‫esattamente quello che abbiamo qui, giusto?
‫In pratica rimuovendo dall'output tutti
‫i documenti che hanno secretTour impostato su true, giusto?
‫Quindi se lo salvi ora, allora controlliamo questo, e ricorda che ora abbiamo
‫11 tour, quattro, quattro e tre quindi controlliamo
‫il risultato dopo e quindi ora in effetti uno
‫dei tuoi difficili è andato quindi solo ora abbiamo
‫tre tour difficili, il che significa che siamo
‫tornati ad averne solo 10.
‫Ok e in realtà possiamo confermare che il nostro tour super segreto
‫è stato un tour difficile, va bene e quindi ora è andato
‫e quindi i nostri risultati ora riguardano
‫solo i normali tour non segreti, va bene?
‫E ora possiamo dare di nuovo un'occhiata alla nostra pipeline
‫di aggregazione e qui vedete che ora abbiamo queste due fasi abbinate.
‫Ottimo e come ho detto prima non
‫è un problema ripetere queste fasi, possiamo avere tutte le fasi
‫di corrispondenza che vogliamo, ok e questo è tutto per il middleware di aggregazione.
‫Non includerò alcun codice postale qui per il middleware che
‫non sia realmente necessario, e non
‫parlerò nemmeno del middleware modello qui perché
‫non è davvero così importante.
‫Bene, quindi il middleware è qualcosa di veramente interessante
‫e importante che possiamo aggiungere ai nostri modelli, e ci
‫sono davvero altre cose interessanti che possiamo
‫fare con i modelli, ad esempio implementare metodi
‫di istanza che sono metodi che saranno disponibili su ogni
‫documento dopo essere stato interrogato, e anche
‫questo può essere abbastanza utile, e
‫lo faremo anche più
‫avanti nella sezione di autenticazione, ok.
‫Quindi lo lascerò per un po' più
‫tardi, ora quello che faremo in
‫questa sezione solo per finire è aggiungere effettivamente un po' di convalida, va
‫bene e quindi nei prossimi due video ne parleremo.