‫-: In questo video implementiamo l'aggiornamento del documento.
‫E così, qui, nel nostro gestore del tour di aggiornamento,
‫iniziamo rendendolo una funzione asincrona.
‫Quindi, o prova a prendere il blocco, quindi lo
‫sto facendo molto velocemente ora, perché a questo punto siamo
‫già abituati.
‫Destra?
‫Quindi questo va nel blocco try e
‫poi ottengo semplicemente questo, qui, dal blocco catch di
‫quest'altra funzione.
‫Va bene, quindi.
‫Eccoci qui.
‫E quindi ora, quello
‫che dobbiamo fare qui all'inizio
‫di questo blocco try è fondamentalmente interrogare
‫il documento che vogliamo aggiornare e quindi aggiornarlo, va bene?
‫E possiamo effettivamente
‫farlo tutto in un comando con mangusta.
‫E ricorda, ancora una volta, che aggiorneremo il tour in
‫base a un documento d'identità, ok?
‫Quindi, è una situazione simile come questa qui,
‫dove troviamo per ID.
‫E ora, possiamo effettivamente fare qualcosa
‫di molto simile, ovvero trovare per ID e aggiornare.
‫Quindi, di nuovo, tutto in una query.
‫Allora, facciamo un tour.
‫findByID e aggiorna.
‫Ok, allora cosa ci serve per passare qui?
‫Bene, naturalmente, l'ID, in modo che possiamo prima trovare il
‫documento che deve essere aggiornato.
‫Quindi, proprio come prima, questo è req. parametri. ID e
‫quindi i dati che vogliamo effettivamente modificare.
‫E quei dati saranno nel corpo, proprio
‫come nella richiesta di posta.
‫Quindi richiesta corpo, ok?
‫E poi, in realtà come
‫terzo argomento, possiamo anche correggere alcune opzioni, e lo faremo.
‫E la prima opzione che voglio specificare è nuova
‫e impostarla su true.
‫Perché in questo modo, quindi, il nuovo documento aggiornato
‫è quello che verrà restituito.
‫E poiché vogliamo restituire quel documento
‫aggiornato al cliente, vogliamo sempre
‫che questo metodo restituisca effettivamente quel nuovo documento, ok?
‫Quindi, in questo modo, in realtà ha
‫senso attendere questa query e quindi salvarla in una nuova variabile.
‫Quindi chiamalo semplicemente tour
‫qui, e poi di nuovo, attendi il risultato di questa query.
‫Quindi tutti questi metodi che abbiamo
‫usato finora nel tour, quindi trova per ID e
‫aggiorna, o, beh, non crea veramente, ma trova per ID o
‫trova, tutti questi restituiranno query, quindi sono query metodi e
‫lascia che te lo
‫mostri effettivamente nella documentazione della mangusta.
‫Quindi, fino a questo punto, non abbiamo dato
‫un'occhiata alla documentazione finora.
‫E quindi, facciamolo velocemente.
‫Quindi, sul modello, che nel nostro caso è tour,
‫abbiamo tutti questi metodi di query, giusto?
‫Quindi vedi trova, vedi trova uno, vedi trova per ID, che è
‫solo una scorciatoia per trovarne uno.
‫Quindi vedi trova per ID e aggiorna, che
‫è quello che stiamo
‫attualmente utilizzando e che, in effetti, è
‫solo una scorciatoia per trova uno e aggiorna, dove stiamo richiedendo un
‫ID, così simile a quello che noi avuto nell'ultima lezione, ok?
‫E in realtà possiamo fare clic su uno
‫di questi, quindi facciamo quello che
‫stiamo usando attualmente, e questo ci porterà davvero alla documentazione
‫dell'API che ci mostra come usare davvero un certo metodo.
‫Quindi vedi che abbiamo passato l'ID, quindi
‫il valore, fuori dall'ID con cui interrogare, abbiamo passato
‫l'oggetto con i dati da aggiornare e abbiamo passato un oggetto options.
‫E qui sotto possiamo effettivamente
‫vedere le opzioni che possiamo impostare,
‫quindi ricorda, abbiamo semplicemente impostato new su true, e
‫quindi come dice qui che restituirà il documento
‫modificato anziché l'originale.
‫Ora, un altro che vogliamo effettivamente impostare
‫su true è questo run validators, in modo che ogni volta
‫che aggiorniamo un determinato documento, i validatori che abbiamo
‫specificato nello schema verranno eseguiti di nuovo, ok?
‫E parleremo molto dei validatori e della validazione un po'
‫più avanti nella sezione,
‫ma lo lascerò qui per ora in modo che, fondamentalmente, non
‫lo dimentichiamo.
‫Bene?
‫Salvalo ora, e in realtà voglio tornare qui
‫solo per mostrarti quanti
‫metodi abbiamo effettivamente in mangusta.
‫Quindi, sul modello, abbiamo tutti questi metodi qui che
‫vedi in questo elenco.
‫Quindi, ad esempio, abbiamo usato create prima,
‫abbiamo anche usato find.
‫Bene?
‫E quindi quelli che vedete qui in alto,
‫sono disponibili proprio sul modello, e quello,
‫nel nostro caso, è il tour.
‫Ora, quaggiù, ad esempio, vedi
‫anche il modello. prototipo. sicuro per esempio.
‫E questo, in realtà l'abbiamo già
‫usato anche quando abbiamo iniziato a lavorare con la mangusta.
‫Quindi non sono sicuro che tu abbia familiarità con questo,
‫ma nel modello di script java. prototipo significa sempre
‫un oggetto creato da una classe, o in questo
‫caso, creato da un modello.
‫E così, il metodo di salvataggio qui si riferisce a un metodo
‫di salvataggio chiamato su un documento e non su un tour.
‫E ricorda che è esattamente quello che abbiamo fatto.
‫E penso di averlo ancora qui come commento.
‫Sì, proprio qui.
‫Quindi, abbiamo avuto un tour, questa nuova variabile tour qui
‫che è stata creata dal modello
‫tour, e quindi questo nuovo tour qui ha avuto accesso al
‫metodo save perché fa parte dell'oggetto prototipo di questa classe.
‫Va bene, ora non voglio annoiarti con i
‫fondamenti dello script java, ma
‫è importante per capire la documentazione, ok?
‫Perché a un certo punto dovrai usare la documentazione,
‫perché la mangusta è yute.
‫E in realtà ti insegnerò molte delle cose
‫importanti lì dentro durante tutto questo corso, ma a volte
‫avrai ancora bisogno di qualcosa che non ti ho
‫mostrato in questo corso.
‫Quindi è importante che
‫tu capisca davvero anche la documentazione, ok?
‫E così, di nuovo, quando vedi il modello. prototipo qui, sai
‫che il metodo di salvataggio
‫qui sarà disponibile su tutte le istanze
‫create tramite un modello, ok?
‫E quindi, non il modello stesso.
‫Quindi, ad esempio, se hai provato il tour. salva non saresti
‫in grado di usarlo.
‫Ti darebbe un errore, ma invece, se provassi
‫a salvare su un documento creato durante
‫il tour, ovviamente funzionerebbe, ok?
‫Spero che abbia un senso.
‫E, comunque, vedi che abbiamo molte
‫altre cose, quindi dobbiamo interrogare, di cui abbiamo già
‫parlato, perché, ad esempio, trova per ID e aggiorna, o
‫trova, o trova per ID, tutte queste funzioni restituire oggetti query.
‫E così, in seguito, quando
‫implementeremo cose come l'ordinamento o il filtro, utilizzeremo questo oggetto query.
‫Bene?
‫Quindi, torniamo indietro, qui siamo usciti dai binari guardando la documentazione,
‫ma, ancora una volta, penso che sia
‫davvero importante iniziare a guardare
‫la documentazione, perché un corso come
‫questo può portarti solo così lontano, e io spero che
‫tu lo sappia già a questo punto, ok?
‫È molto importante che tu sia anche in grado di
‫trovare informazioni da solo, e voglio mostrarti come
‫farlo anche in questo corso.
‫Ad ogni modo, ora inviamo anche questo
‫tour appena aggiornato al client, cosa che, in
‫questo momento, non stiamo facendo, perché
‫abbiamo semplicemente questa stringa di tour aggiornata qui.
‫Quindi liberiamoci di questo e mandiamo semplicemente in tour.
‫E ricorda che questo, in effetti, è proprio questo.
‫Quindi, la proprietà tour è impostata sull'oggetto tour, ma, grazie
‫a ES6, non dobbiamo più farlo quando il
‫nome della proprietà ha lo stesso nome del valore.
‫Ok, allora sbarazziamoci di quello.
‫Ciò rende il nostro codice un po' migliore.
‫Ok, e ora proviamolo.
‫Tornando al postino, ecco il percorso aggiornato del tour.
‫E quindi, facciamolo
‫con lo stesso ID che usavamo prima.
‫Quindi, questo.
‫Poi veniamo al corpo, qui, e cambiamo...
‫Beh, cosa cambieremo qui?
‫Bene, cambiamo il prezzo in tipo 500.
‫Quindi, prezzo, 500, invialo, e infatti
‫questo ci dà l'oggetto appena
‫aggiornato con il prezzo già
‫impostato a 500.
‫E se ora otteniamo tutti i tour, questo,
‫ovviamente, dovrebbe riflettersi qui.
‫Ed eccolo qui.
‫Ma ora, diciamo che lo impostiamo su una stringa.
‫Diamo un'occhiata a cosa succede, allora.
‫Bene, allora otteniamo effettivamente un errore.
‫E questo perché abbiamo eseguito di nuovo i validatori.
‫Quindi, ricorda che abbiamo...
‫Dov'e'?
‫Oh sì, qui.
‫Quindi qui specifichiamo che i validatori dovrebbero essere eseguiti di nuovo.
‫E quindi, in questo momento il prezzo non è più un numero
‫come ci si aspetta, giusto?
‫Quindi in uno schema diciamo che il prezzo dovrebbe essere
‫un numero, ma, ovviamente, java script o
‫mangusta, in realtà, non possono, sostanzialmente, convertire questa stringa qui in un numero.
‫Ma è quello che ci aspettiamo.
‫Quindi qui dice che il tipo dovrebbe essere il numero.
‫E quindi, quindi, ci dà un
‫errore, semplicemente perché stiamo eseguendo di nuovo i validatori.
‫Quindi, riportiamolo a 500 e poi,
‫ovviamente, tornerà.
‫Va bene, ora, tieni presente che stiamo effettivamente
‫facendo una richiesta di patch qui.
‫Ora, se stessimo facendo una richiesta put, ricorda,
‫allora ti aspetteresti che l'oggetto originale
‫venga completamente sostituito
‫con quello nuovo che viene inviato, ok?
‫Quindi, in quel caso non funzionerebbe
‫più nel modo in
‫cui abbiamo implementato qui perché questo ha semplicemente
‫aggiornato i campi che sono diversi qui nel corpo, ok?
‫Ma comunque, penso che il metodo patch
‫sia in realtà molto
‫più utile, e quindi sarà l'unico che verrà implementato qui.
‫Bene, quindi abbiamo implementato tre delle nostre quattro operazioni
‫corrette, solo un'altra ancora da fare,
‫che verrà eliminata.