Tutto ok.
Ben tornato.
Quindi in questo video affronteremo il problema che ho menzionato nell'ultimo video, ovvero
che in questo momento utilizziamo un database tra il nostro ambiente di sviluppo cloud nove locale e il nostro
ambiente di produzione su Heroku.
Quindi il nostro codice implementato sta usando lo stesso database che il nostro campo di test è che non è davvero
una grande idea.
dove sai se abbiamo un grande applicazione il nostro database principale con tutti i nostri utenti distribuiti.
Le cose funzionano bene non è un problema nel senso che il nostro codice è rotto o che non possiamo ottenere usando
in questo modo, ma non è davvero una buona pratica, perché non vogliamo avere un database
Non vogliamo testare le cose, avvitare e aggiungere nuove funzionalità cancellando accidentalmente
le voci nel database o eliminando l'intero database.
Nel nostro ambiente di sviluppo.
Quindi vuoi tenere quelli separati.
E solo per dimostrare adesso cosa stiamo succedendo.
Ho ricordato che ciò che abbiamo fatto è stato aggiornare il nostro codice piuttosto che utilizzare gli host locali.
Non puoi alimentare 10 o qualunque database tu o tu avessi lì, ma la versione locale su cloud 9
l'abbiamo aggiornata come laboratorio di Mangu.
E questa è la nostra istanza di Mongo Lab ed è la stessa che abbiamo attualmente in esecuzione localmente.
E su Heroku quindi aggiornerò semplicemente la pagina su entrambi.
Questo è Heroku, come si può vedere abbiamo una spiaggia di rodeo e abbiamo nuovamente la spiaggia di rodeo solo per
dimostrare che sono collegati, naturalmente.
Aggiungiamo un nuovo campeggio qui.
Il nome per questo sarà Kirby Cove.
Userò semplicemente questa immagine qui, che è quella che ho scattato qualche settimana fa completamente spudorato.
Non puoi farci niente.
Quindi ho intenzione di copiare quell'incolla che qui e appena messo blah blah blah auto completo.
Grazie.
Chrome fai clic su Invia.
Bene, abbiamo questo qui su Heroku.
E mi rinfresco.
Ho lo stesso codice Kirby creato qui localmente.
Quindi non si tratta nemmeno di eventi catastrofici.
Quando uno sviluppatore può cancellare accidentalmente l'intero database.
Vediamolo.
Diciamo che volevo provare una funzione che volevo sapere se l'operazione di eliminazione sul mio percorso di eliminazione funziona.
Bene, se vado qui e se ho cancellato qualcosa che non ho firmato, ma se ho cancellato questo, lo sto anche
cancellando dalla produzione, il che significa che sto cancellando i dati reali di qualcuno che non sono
mai buoni.
Quindi è davvero una buona idea avere database separati.
Quindi un modo per risolvere questo problema è tornare al cloud 9 e solo al cloud nove switch.
Bene, stiamo usando qui in modo che ora stiamo usando di nuovo la versione localhost del campo
per salvare il riavvio del server qui e ora su cloud 9 5.
Vedrai che stiamo usando la vecchia versione o quello che stavamo usando prima della versione locale e
su Heroku stiamo ancora usando l'istanza del laboratorio Monga perché al momento non sono sincronizzati.
Abbiamo apportato modifiche a livello locale su cloud 9 che non le abbiamo spinto OK.
E questo va bene.
'fastidioso perché se voglio aggiungere una nuova funzionalità, cambio C S S e voglio aggiornarlo su Heroku.
Questo funzionerà è valido ma è un po
Bene, allora dovrò capire cosa intendo fare del nostro database che conosci.
Dovrò commentare questo commento o ricominciare a commentare che uno salva e comanda tutto ciò lo spinge a
Heroku E poi se volevo aggiungere di nuovo una nuova funzionalità localmente o testare
qualcosa.
Lo commento e lo disapprovo ed è solo che non è affatto una buona soluzione.
Tuttavia esiste un'altra soluzione o un altro approccio che possiamo adottare.
scrivere un codice che indichi se siamo in produzione o impostiamo il database su cui ci si trova.
In pratica, ciò che faremo è
Altrimenti impostalo per essere questo qui.
Ora non sarà in realtà una dichiarazione if.
E tecnicamente non stiamo controllando se siamo in produzione se siamo dentro o se siamo su Heroku.
È un po 'diverso.
Quello che faremo è utilizzare qualcosa chiamato variabili d'ambiente.
Quindi li abbiamo già visti prima.
che rivede e ogni processo di app Express fa invidia al processo di port che IP EMV.
Questa piccola linea proprio qui
Quindi, cosa significa questo qui?
E l'ho esaminato brevemente, ma penso che avresti un po 'più senso ora che hai ancora un po'
di esperienza sotto la cintura.
Ciò a cui questo si riferisce è l'ambiente in cui viene eseguito questo codice.
Quindi il processo che hai invidiato su porta su cloud nove potrebbe forse essere diverso rispetto a
processare quel punto sul suo Roku probabilmente è IP.
modi per aggiungere variabili che non sono cose hard coded che cambiano in base all'ambiente in cui vengono eseguite.
Quindi questi sono
Quindi avremmo potuto inserire qualcosa come 80 80 qui.
Ma ovviamente è codificato.
Non è dinamico.
Questo ci permette di avere variabili che rispondono all'ambiente e nel nodo in javascript sarà in realtà
solo un nodo.
Iniziano sempre con il processo D-NV è così che si accede a loro.
E poi il nome della variabile.
Quindi quello che faremo qui è avere una variabile di ambiente che chiamerà il database Yoro e
su Heroku imposteremo il database in modo da poter essere questa lunga cosa qui e poi tutto ciò che dovrà
fare è fondamentalmente scrivere
il processo in il database che sei.
E questo si riferirà all'URL corretto per il nostro ambiente dato.
E poi faremo la stessa cosa qui.
Siamo ben posizionati su cloud nove database in cui Arel sarà mongolo D-B: il colon ci segherà localhost che può
Campfield 10.
Quindi di nuovo l'idea è che possiamo creare una variabile di ambiente che non ti ho mostrato come fare.
Questo è solo il modo in cui li accedi.
Ma ricorda che questo viene da fuori da questa applicazione.
Questo proviene dall'applicazione reale o dall'ambiente reale sul quale stiamo
eseguendo il codice.
facciamo questo lavoro comincerò andando qui chiudendo e creerò una nuova variabile di ambiente nella riga di comando
nell'ambiente quando un tipo export è un nuovo comando e poi I ' Sto andando a scrivere la mia
variabile di ambiente che di solito la convenzione deve fare in tutte le maiuscole.
Quindi per dimostrare come
Come puoi vedere qui IP port.
Quindi faremo il data base.
Siete tutti uguali e inizieremo a reimpostarlo in modo uguale a ciò che vogliamo eseguire sul nostro caso cloud nove, su ciò che vogliamo
che il database a cui siete tutti uguali.
Proprio così e premi
invio per verificare se lo fossero.
Fare questo qui proprio qui.
Annullare la procedura di registrazione.
Invidia di papà
E questo deve corrispondere al data base che conosci.
E se vediamo che l'host locale di Canvey 10 di Mongar D-B Colon è tornato fuori o
stampato, sappiamo che abbiamo creato con successo il database di sviluppo che conosci.
Quindi vediamo cosa succede al nodo.
Sì, andiamo a vedere che è stato stampato qui.
Non ho mai detto di stampare localhost.
Puoi fingere.
Ho detto che il database delle variabili d'ambiente è attivo.
Quindi ora tutto ciò che dobbiamo fare è dire che Mangeshkar si connette per elaborare
il database NVI.
Tu IRA e poi su Heroku abbiamo bisogno di andare ad aggiornare il database che sai essere questo gigante di laboratorio Mongo. Sei tutto
corda ma vogliamo solo che succeda su Heroku.
Vogliamo lasciare questo solo al settimo cielo.
Quindi assicuriamoci che funzioni così vocalizzi un riavvio.
Grande.
Andiamo alla nostra versione corretta qui refresh e stiamo ancora ottenendo il codice locale Heroku ovviamente non è
cambiato perché non abbiamo inserito alcun codice in Heroku.
Quindi ora se salviamo questo e aggiungiamo e confermiamo
di dire aggiorna il
tuo IRL ottieni push Heroku M. Se proviamo ad eseguire la versione di Heroku in questo momento
se non appena questo termina almeno se cerco di aggiornare questa pagina avrò un errore perché Heroku sono i server
che sarebbero in grado di trovare lo studio del processo e il database vidette lo sai perché non è impostato.
Quindi, solo per mostrarti che l'aggiornamento potrebbe
richiedere un po 'e che dovrebbero ottenere l'errore dell'applicazione e mentre stiamo andando là fuori andiamo.
Errore dell'applicazione di nuovo se vuoi veramente sapere esattamente cosa sta succedendo.
Sono i log di Heroku e puoi vedere qui non so quanto sia utile il messaggio di
errore che otterremo sarà onestamente.
Vediamo.
Questo potrebbe essere uno di quei
messaggi che non ti dice esattamente quello che speravi ma ci dice che c'è un errore in Mongar D-B.
Yesso non dice esplicitamente che questo database è un
problema perché quello che sta realmente accadendo è che sta tentando di connettersi a una stringa vuota molto probabilmente che tecnicamente non è
un problema tranne che per il fatto che non esiste un database localizzato a sei una stringa vuota.
Quindi è una sorta di messaggio di errore inaspettato.
Quindi ti sto dicendo che il problema è che
non abbiamo impostato un processo o che non abbiamo impostato la variabile d'ambiente su Heroku.
Quindi per farlo ci sono diversi modi in cui possiamo farlo se andiamo a Heroku stesso.
Probabilmente dovrò accedere di nuovo qui, aggiorno la pagina.
No, non avevo bisogno di distendermi.
Ecco la nostra app.
Bene, se entriamo e andiamo nei setting credo che lo sia.
E poi continua a scorrere verso il basso o vai a configurare le variabili.
Possiamo aggiungere una variabile qui.
Quindi vogliamo che il tuo database Earl sia una stringa gigante.
L'ho copiato e faccio clic su aggiungi.
E se torniamo ora prova ad aggiornare la pagina.
Funziona perfettamente OK.
Quindi questo è un modo per farlo.
Ti ho mostrato come andare su
Heroku e aggiungere in una coppia di valori chiave il tuo database Erlass e la chiave o il nome della variabile la variabile di ambiente e quindi un valore.
Questo è un modo per farlo, l'altro modo di farlo è attraverso la linea di comando che puoi eseguire un comando.
Possiamo farlo qui.
Io ho il n.
J. S. i documenti di supporto aprono su Heroku questa riga Set di due punti di configurazione Heroku e quindi il valore di chiave uguale.
Quindi copierò questo primo bit se vogliamo che non lo faccia realmente.
Non ho intenzione di entrare, ma voglio solo mostrarti che sarà
la configurazione di Heroku Kolin e poi il database sei uguale e poi abbiamo incollato che sei su.
Ma lo farò.
Quindi un'altra cosa che non
ho ancora menzionato è che c'è un altro buon motivo per usare le variabili di ambiente
che è che sono nascoste lì non sono esposte a qualsiasi cosa siano gli sviluppatori se mettete questo codice su un buon hub.
il mio database.
Non vogliamo che il nostro database sia qui, naturalmente, o se non conosci già
Ma questa non è ovviamente una vera app.
Ma se questa era una vera applicazione
anche se si tratta di un'applicazione open source o di parti del mio codice o open source,
non voglio esporre i miei dati o il mio database a chi guarda il codice.
Quindi, avendo
questa linea qui, Mongar inizia a connettere il processo che il database di punti NV che elevi non è più un problema.
il proprio database.
In modo che questo sia tutto ciò che uno sviluppatore vedrebbe o chiunque sfogli il codice quando torna a casa e dovrebbe impostare
State tutti utilizzando le variabili d'ambiente.
OK.
Ricapitoliamo cosa abbiamo fatto.
Abbiamo iniziato con il
problema di un database per lo sviluppo e la produzione di un database condiviso per risolverlo.
Impostiamo localmente le
variabili di ambiente URL del nostro database su cloud nove e su due valori diversi per la stessa variabile.
E poi abbiamo acceduto a
quella variabile la variabile d'ambiente usando il processo ENVI che database ti IRL e ci colleghiamo a quello.
Quindi abbiamo due risultati.
Una cosa che menzionerò è che vale la pena impostare un valore predefinito.
Quindi diciamo che in qualche modo ho rovinato la mia app se riavvio il mio computer.
Non so resettare questo spazio di lavoro nella mia variabile di ambiente se n'è andato o
lo sto inviando a qualcuno e voglio che non abbia un database predefinito che potrebbero usare solo per
far sì che il codice non funzioni si interrompe completamente se non l'ho impostato in modo esplicito.
Quello che posso fare è aggiungere un po 'di backup, quindi creeremo una variabile e la chiameremo semplicemente.
Siete tutti uguali e inizieremo il processo avviato nel database in cui siete reali o.
E poi ne metteremo alcuni che sono là fuori, quindi facciamo quello che era, ELLYARD l'ha già perso.
Eccoti.
Quindi questo sarà solo un backup.
Quindi, di nuovo quello che sta succedendo qui è
che non è obbligatorio non cambia la funzionalità ma se per qualche motivo la mia variabile di ambiente si è rovinata o non è esistita.
tutto variabile e sarà uguale alla variabile d'ambiente, se esiste.
Piuttosto che infrangere il codice, ciò che accadrà è che tu sei
Se è una stringa vuota o se
non esiste, sarà uguale a questo, che è solo il nostro backup.
In questo caso su cloud nine ci sono esattamente la stessa cosa.
Non è davvero obbligatorio di nuovo.
È semplicemente una buona pratica avere nel caso qualcosa sia andato storto.
Ma in realtà te lo sto solo mostrando perché è abbastanza comune vedere anche questo.
OK.
Questo tipo
di approccio a lungo termine o non tortuoso è quello che si avvicina a questo, ma tutto si riduce al fatto
che vogliamo processi di database diversi che nel database di Vidette IRL sia come accediamo alle variabili di ambiente da un'app di nodo.
Vuoi chiarire anche se le variabili d'ambiente non sono una cosa nodo o una cosa javascript.
Applicazioni di rotaie di applicazioni di Ruby Le app di Python possono accedere a
tutte le variabili di ambiente e in tutto sembrano relativamente semplici in questo modo accade semplicemente
che nel nodo si scriva il processo in vi in ​​altri linguaggi come Ruby.
Vedrai spesso qualcosa come il database ENV che conosci.
Quindi è un concetto universale non è una cosa specifica
per il nodo ed è universale anche per tutti i tipi di applicazioni.
Non lo usi solo per gli URL del database che lo utilizzano ogni volta che lo desideri.
Sembra un errore di battitura qui.
In entrambi i casi dovrebbe essere localhost.
Usalo ogni volta che vuoi
avere informazioni diverse tra lo sviluppo o la produzione di diversi ambienti.
Lo usi anche quando vuoi nascondere o oscurare informazioni da qualcuno e ottenere aiuto, per esempio.
Quindi, se tu avessi il tuo paypal o le tue informazioni API di
elaborazione delle carte di credito Strype all'interno della tua applicazione perché ne avevi bisogno per il codice.
Bene, se vuoi condividere il tuo attuale, ottieni come ovviamente non vuoi essere spinto a farlo.
Quindi quello che puoi fare è creare una variabile di ambiente e fare qualcosa di simile al processo.
Ian VI è morto informazioni super-sensibili e questo è un modo per aggirare il
problema di voler condividere il tuo codice rendendolo pubblico ma anche non volendo condividere le tue informazioni super sensibili dove qualcuno potrebbe prendere
la tua chiave API ed eseguire un conto di migliaia di migliaia di dollari, che
in realtà accadono, alcune delle aziende più grandi sono molto più brave a sorvegliarlo.
Quindi Amazon, ad esempio se hai la tua chiave API Amazon o
le tue informazioni AWOS, le informazioni sui servizi web di Amazon Web Services su get hobe loro lo sapranno e ti invieranno
un messaggio che ti dice che devi toglierlo immediatamente o che stanno per disabilitare esso.
Qualcuno potrebbe far pagare migliaia e migliaia di dollari a questo.
Potrebbero usare te o sostanzialmente il tuo account per scappare da un conto enorme che non devono pagare.
Succede relativamente spesso.
Ho sentito di alcuni studenti che
hanno questo problema e mio e promettono, ma sicuramente ne ho sentito parlare prima.
Tutto ok.
Quindi elaborare l'invidia è come accedere alle variabili di ambiente.
Abbiamo due database installati e ora abbiamo implementato due database diversi.
Non condividono alcuna informazione che è come lo vogliamo.
Eccezionale