Bentornato a questo video, vi mostrerò l'altro modo di associare i dati usando i riferimenti
agli oggetti.
Quindi, prima di iniziare, creerò un nuovo file qui nella stessa directory e
chiamerò questo.
Riferimenti insegnati J.
E ho intenzione di copiare tutto in quel file dalla lezione precedente e ho intenzione
di modificare questo.
che usiamo solo per non essere in conflitto e non sovrascriviamo quello che abbiamo appena fatto in precedenza.
La prima cosa che farò è cambiare il database
Quindi farò anche il nome blogg demo underscore.
Tutto ok.
E poi ho intenzione di andare avanti e sbarazzarmi di molte cose qui.
Praticamente tutto a parte il nostro schema che abbiamo nei modelli.
E inizierò parlando di cosa significa fare riferimento ai dati anziché incorporarli.
Quindi quello che abbiamo fatto l'ultima volta nell'ultimo video è stato l'incorporamento dei dati in cui un utente ha
un aspetto simile a questo con un nome e c'è anche una e-mail.
E poi c'è un array POST e ogni post di quell'array è stato
effettivamente memorizzato all'interno dell'array proprio come questo, dove titolo e contenuto.
Eccoci.
E noi ne conosciamo cinque sei quanti ne vogliamo e ascoltiamo post diversi all'interno dell'array POST.
Ora quello che ti mostrerò in questa lezione è molto simile, tranne quello che effettivamente facciamo è un poster array e
all'interno di tutto ciò che stiamo andando a memorizzare qui piuttosto che i post effettivi.
Avremo un sacco di ID quindi avremo questi ID lunghi che sembrano così e
così via.
E queste idee corrisponderanno ai singoli post.
Quindi avremo un post qui che ha un ID uguale a questo e avrà il titolo che hai chiamato
qualcos'altro e così via.
Quindi, ancora una volta la differenza principale è che stiamo memorizzando gli ID da cui proviene il riferimento al nome.
Stiamo facendo riferimento all'ID di un altro post piuttosto che incorporare l'intero post.
OK, allora iniziamo.
E dobbiamo apportare alcune modifiche al nostro schema piuttosto che avere i post come una matrice di schemi di post.
Ciò che effettivamente facciamo lo rende un array.
Ma passeremo un oggetto e l'oggetto assomiglierà a questo.
Intendo spazi solo un po '.
E il nostro oggetto avrà due tipi di proprietà principali e ref e il tipo
sarà manuesa che i tipi di schema dot object id e ref saranno post.
Quindi parliamo di cosa ho appena fatto qui.
Ho detto che nello schema utente c'è un attributo post ed è un array ma piuttosto che un array
di post come quello che abbiamo qui.
O è una matrice dello schema del post.
In realtà è una serie di ID oggetto.
E questo è solo il modo in cui scriviamo questa sintassi.
È un id oggetto mongoose che appartiene a un post e possiamo salvare.
E solo per essere sicuri di non aver fatto nulla di sbagliato, possiamo eseguire il file assicurandoci di non ottenere un errore.
Grande.
Ora iniziamo creando un singolo utente che possiamo quindi aggiungere post in seguito.
questo darà una email di Bob a gmail dot com e un nome sarà Bob Filcher e lo salveremo e quindi lo lasceremo in questo modo
e penseremo che questo sarà lavorare piuttosto che aggiungere la richiamata in.
Così l'utente crea e
Quindi questo creerà il nostro primo utente.
Quindi eseguiamo il file.
Tutto ok.
Quindi non vediamo nulla, ma potremmo andare a Mangu e dare un'occhiata.
Quindi mostra anche la demo del registro di utilizzo di Digby e poi possiamo trovare gli utenti e abbiamo un utente con il suo
nome.
Belcher e-mail Bob a gmail dot com e post vuoti perché non abbiamo ancora aggiunto alcun post.
Bob
Quindi andiamo fuori di qui e la prossima cosa che voglio fare è aggiungere un post a questo utente, quindi ho intenzione
di sbarazzarmi di quella dichiarazione di creazione e uscirò in modo che tu possa vederlo e cosa farò fare è fare un
nuovo post.
Quindi post-doc creare e lo stiamo facendo indipendentemente dall'utente.
hamburger e poi il contenuto e non solo riempirlo di bla bla bla di leggi per ora proprio così e salverà e questo dovrebbe farci
un post e solo per assicurarci che questa volta aggiungiamo l'errore di callback e post e
cancelleremo quel post di log e non gestiremo l'errore solo per il tempo necessario ed eseguiremo il file.
Quindi stiamo facendo quel post e gli daremo un titolo su come cucinare il miglior
E ora abbiamo aggiunto un nuovo post al database con un ID.
Ricorda questo I. D. ricorda il tutto 5 6 2 5 8 3 7 8.
Ora sto solo scherzando.
Ma ricorda quello che sembra.
E poi abbiamo il nostro contenuto e poi il nostro titolo.
Tutto ok.
Quindi andiamo fuori di lì.
Quindi quello che vogliamo fare è parlare di come possiamo collegare un post e un utente che usa quell'ID.
E per farlo, in realtà sto andando a seguire i passaggi per creare un altro post.
Chiamiamo questo come cucinare il miglior hamburger.
Seconda parte e questo farà un nuovo post e una volta salvato quel post andremo a cercare
l'utente PABX.
Quindi faremo trovare un utente e troveremo uno e troveremo il tuo nome.
Facciamo un'e-mail questa volta, dove l'e-mail è Bob at gmail dot com e poi eseguiremo questo codice
in seguito e poi scopriremo che chiameremo questo utente trovato.
OK.
Quindi sta succedendo molto.
Quindi stiamo creando un post una volta che il post è stato creato.
In questo caso, stiamo trovando un utente in questo caso che
abbiamo già creato e quindi gestiremo l'errore se necessario.
Altrimenti aggiungeremo il post ai post degli utenti.
quello che abbiamo chiamato qui e stiamo andando a spingere in push post e post si riferisce al post che abbiamo appena creato che era
sicuro il database con titolo Come cucinare il Vestberg o al contenuto bla bla bla bla bla.
Quindi abbiamo trovato i post degli utenti che è
Lo salviamo se funziona.
Abbiamo una variabile post che memorizza il post e quindi raffina l'utente.
In questo caso quello con l'email Bob at gmail dot com.
E poi se lo troviamo, aggiungeremo il nuovo post agli array di utenti.
Allora salviamolo.
Quindi dopo abbiamo bisogno di fare un altro utente trovato salva.
bisogno di un altro callback e questo avrà errori e chiameremo questi dati solo per rendere davvero chiaro cosa sta succedendo.
E sì, abbiamo
E qui sto solo andando di nuovo a
gestire l'errore e poi se non ci sono errori andando a cancellare i dati del registro.
L'uomo giusto abbiamo molto qui.
Quindi crea un post trova l'utente e poi prendi quel post spingerlo nei post degli utenti, salva l'utente
e, quando ciò accade, stampa i dati.
Vediamo cosa otteniamo.
Tutto ok.
Quindi ha funzionato.
Ecco il nostro nome utente Email di Bob Belcher.
Ecco l'id utente e quindi invece dei post tutto ciò che abbiamo è un array con un elemento ed è un
ID oggetto contro quando abbiamo l'embed J. S. dove lavoravamo con i dati incorporati.
Avevamo l'intero post in modo tale che al posto di questo array abbiamo effettivamente visto i dati.
Ora stiamo solo vedendo
l'ID così.
Quindi andiamo ad aggiungerne un'altra.
Quindi faremo la parte 3.
E il testo di quello invece di blah blah blah.
Sarà semplicemente riduttivo solo così che è più facile distinguere.
E il console aggiungerà quel post.
Ora abbiamo due ID oggetto qui e ognuno corrisponde a un singolo post.
OK.
Quindi è così che possiamo associarli.
Ma ora abbiamo bisogno di capire come prendere questo ID oggetto e trovare il post corretto.
Diciamo che vogliamo trovare un utente.
E poi voglio scoprire che anche gli utenti postano e non solo gli ID ma voglio tutti i dati.
Quindi ho intenzione di svuotare la console e ho intenzione di commentare questo mostro qui.
E quindi quello che vogliamo fare è trovare l'utente e quindi trovare tutti i post per quell'utente.
E c'è in realtà un modo per farlo in una volta.
Quindi dobbiamo prima trovare l'utente.
In questo modo, l'utente troverà e troveremo di nuovo uno e poi dovremo passare e quello che
stiamo cercando sarà l'email in cui si trova Bob at gmail dot com.
E poi questo è qualcosa di nuovo.
Quindi non abbiamo visto questo prima.
Dot popola che riempiremo i post e poi dot exec e spiegherò tutto questo in un attimo.
OK.
Quindi, cosa abbiamo fatto qui, abbiamo scritto una query più lunga che ha più parti.
Quindi stiamo cercando un utente.
cambiando questo popolò i post che in realtà popoleranno i post sul campo e cercheranno tutti quegli ID oggetto
che troveranno i dati corretti e poi li incolleremo nell'array post e quindi eseguiremo exec per avviare effettivamente la query.
E poi stiamo
Quindi è un po 'strano.
Ne stiamo trovando uno.
Ma notiamo che non stiamo usando una callback qui e stiamo cambiando popolato e quindi lo stiamo
dando a Dot exec alla fine, che in realtà farà accadere tutto questo.
Quindi passiamo il callback in exec perché è quando eseguiamo il codice.
E se lo avessimo fatto bene
Quindi controlliamo se c'è un errore.
Primo Consiglio che registra l'errore.
Altrimenti si spera che il nostro utente abbia tutti i post pre-compilati all'interno
dell'attributo posts, quindi cancellerà quell'utente e proveremo a farlo.
Assicurati che tutto sia commentato tranne questo.
Corriamo.
E tu cosa sai
Ha funzionato.
Quindi otteniamo un nome utente è Bob Belsher e-mail Bob a gmail dot com.
Ma ora post non è solo un array di ID oggetto.
In realtà ha il post completo lì.
Entrambi.
Quindi puoi vedere che ha un'idea di ciò che abbiamo contenuto e titolo titolo e titolo.
Quindi, per riassumere tutto ciò che abbiamo fatto, memorizziamo i dati che assomigliano a questo qui con gli ID oggetto.
Puoi vedere i due ID degli oggetti e poi abbiamo fatto una seconda query per recuperare i dati e
abbiamo compilato il post Saray con tutti i dati usando populate che exec.
Quindi ti starai chiedendo perché useremmo l'uno contro l'altro.
Quando dovremmo incorporare i dati rispetto a quando dovremmo usare riferimenti a ID di oggetti.
Ed è una domanda davvero buona e davvero importante che verrà affrontata mentre li usiamo al posto
del nostro campo.
La risposta breve è che dipende.
E puoi ottenere usando uno stile e praticamente ogni situazione.
Comunque di solito ce n'è uno che usa riferimenti o incorpora dati che si prestano meglio a
qualsiasi cosa tu stia facendo e ne parleremo mentre passiamo attraverso il tuo campo e
iniziamo ad aggiungere commenti e utenti e aggiungiamo valutazioni e foto e tutte queste diverse caratteristiche.
Alcuni di questi verranno incorporati e alcuni di essi verranno referenziati