D'accord.
Nous saluons le retour.
Donc, dans cette vidéo, nous allons résoudre le problème que j'ai mentionné dans la dernière vidéo, à savoir que nous utilisons une base de données entre notre environnement de développement Cloud 9 local et notre environnement de production sur Heroku.
Donc, notre code déployé utilise la même base de données que notre terrain d'essai qui n'est vraiment pas une bonne idée.
Les choses fonctionnent bien ce n'est pas un problème dans le sens que notre code est cassé ou que nous ne pouvons pas obtenir en utilisant cette manière mais ce n'est vraiment pas une bonne pratique parce que nous ne voulons pas avoir une base de données où vous savez si nous avons un Grande application de notre base de données principale avec tous nos utilisateurs qui est déployé.
Nous ne voulons pas tester les choses et visser et ajouter de nouvelles fonctionnalités supprimant accidentellement les entrées dans la base de données ou en supprimant la base de données entière.
Dans notre environnement de développement.
Donc, vous voulez garder ces séparés.
Et juste pour démontrer maintenant ce que nous avons en cours.
Je me souviens que ce que nous avons fait, c'est que nous avons mis à jour notre code plutôt que d'utiliser les hôtes locaux.
Vous ne pouvez pas nourrir 10 ou n'importe quelle base de données que vous ou vous avez eu là mais la version locale sur le nuage 9 nous l'avons mis à jour pour être laboratoire de Mangu.
Et c'est notre exemple de laboratoire de Mongo et c'est le même que nous avons ce courant localement maintenant.
Et sur Heroku donc je vais juste actualiser la page sur les deux.
C'est Heroku déployer comme vous pouvez le voir, nous avons une plage de rodéo et nous avons la plage de rodéo à nouveau juste pour prouver qu'ils sont connectés bien sûr.
Ajoutons un nouveau terrain de camping ici.
Le nom de celui-ci sera l'anse Kirby.
Je vais juste utiliser cette image ici qui est celle que j'ai pris il ya quelques nuits totalement bouchon sans vergogne.
Vous ne pouvez rien y faire.
Donc, je vais copier cette pâte qui ici et juste mis blah blah blah auto complet.
Je vous remercie.
Cliquez sur Chrome pour envoyer.
Très bien, nous avons ceci ici sur Heroku.
Et je rafraîchis.
J'ai le même code Kirby créé ici localement.
Il ne s'agit donc pas d'événements catastrophiques.
Lorsqu'un développeur peut accidentellement supprimer la base de données entière.
Voyons ça.
Disons que je voulais tester une fonctionnalité que je voulais savoir est la suppression de travailler sur mon itinéraire de suppression de travail.
Eh bien si je vais ici et si j'ai supprimé quelque chose que je ne suis pas signé, mais si je l'ai supprimé, je suis également la suppression de la production ce qui signifie que je suis la suppression des données réelles de quelqu'un qui n'est jamais bon.
C'est donc une bonne idée d'avoir des bases de données distinctes.
Donc, une façon de résoudre ce problème est de revenir à Cloud 9 et juste sur le nuage neuf switch.
Eh bien, nous utilisons ici afin que nous utilisons maintenant la version camp localhost à nouveau pour sauvegarder redémarrer le serveur ici et maintenant sur le nuage 9 5 rafraîchir.
Vous verrez que nous utilisons l'ancienne version ou ce que nous utilisions avant la version locale et sur Heroku nous utilisons toujours l'instance de laboratoire Monga parce que maintenant ils sont désynchronisés.
Nous avons des changements que nous avons faits localement sur le nuage 9 que nous n'avons pas poussé à son OK.
Et c'est très bien.
Cela va fonctionner c'est valable, mais c'est un peu ennuyeux parce que si je veux ajouter une nouvelle fonctionnalité, je changer le C S S et je veux mettre à jour sur Heroku.
Eh bien, je vais devoir comprendre ce que je vais faire au sujet de notre base de données que vous connaissez.
Je vais devoir commenter ce commentaire que ou recommit sur uncomment que d'enregistrer et de commander tout cela pousser à Heroku Et puis si je voulais ajouter une nouvelle fonctionnalité localement de nouveau ou de tester quelque chose.
Je commenter cela et commenter cela et c'est juste ce n'est vraiment pas une bonne solution à tous.
Cependant, il ya une autre solution ou une autre approche que nous pouvons prendre.
Et essentiellement, ce que nous allons faire est d'écrire un code qui dit si nous sommes en production ou de définir la base de données que vous êtes à ce sujet.
Sinon, il est ici.
Maintenant, ce n'est pas vraiment une déclaration if.
Et nous ne vérifions pas techniquement si nous sommes en production si nous sommes dans ou si nous sommes sur Heroku.
C'est un peu différent.
Ce que nous allons faire est de faire appel à quelque chose appelé variables d'environnement.
Donc, nous les avons déjà vus.
Cette petite ligne ici qui examine et chaque processus Express app envient processus port que EMV IP.
Donc, ce que cela signifie ici, ce que c'est.
Et je suis allé sur ce brièvement, mais je pense que vous ferez un peu plus de sens maintenant que vous avez un peu plus d'expérience sous votre ceinture.
Il s'agit de l'environnement dans lequel ce code est exécuté.
Donc, le processus que vous envie le port sur le nuage neuf peut-être différente que le processus de ce point de port sur son Roku est probablement IP est certainement.
Ce sont donc des façons d'ajouter des variables qui ne sont pas des choses codées en dur qui changent en fonction de l'environnement dans lequel elles sont exécutées.
Nous aurions pu mettre quelque chose comme 80 80 ici.
Mais bien sûr, c'est hardcoded.
Ce n'est pas dynamique.
Cela nous permet d'avoir des variables qui répondent à l'environnement et dans le noeud en javascript sera en fait juste un nœud.
Ils commencent toujours par le processus D-NV, c'est la façon dont vous y accédez.
Et puis le nom de la variable.
Donc ce que nous allons faire ici est d'avoir une variable d'environnement qui appellera base de données Yoro et sur Heroku nous allons définir la base de données que vous êtes capable d'être cette longue chose ici et puis tout aura à faire est essentiellement écrit processus en La base de données que vous êtes.
Et cela se référera à l'URL correcte pour notre environnement donné.
Et puis nous ferons la même chose ici.
Nous sommes bien réglés sur la base de données de nuage neuf Arel d'être Mongar D-B colon slash localhost elle peut Campfield 10.
Donc, encore une fois, l'idée est que nous pouvons créer une variable d'environnement que je ne vous ai pas montré comment faire.
Voici comment vous y accédez.
Mais rappelez-vous cela vient de l'extérieur de cette application.
Cela provient de l'application réelle ou de l'environnement réel du serveur sur lequel nous exécutons le code.
Donc, pour démontrer comment nous faisons ce travail, je vais commencer par aller ici à la fermeture et je vais créer une nouvelle variable d'environnement dans la ligne de commande dans l'environnement quand une exportation de type est une nouvelle commande, Je vais écrire ma variable d'environnement qui, d'habitude, la convention doit faire dans tous les casquettes.
Comme vous pouvez le voir ici le port IP.
Donc, nous allons faire base de données.
Vous êtes tous égaux et nous allons commencer à la réinitialiser égale à ce que nous voulons courir sur notre instance de nuage neuf ce que nous voulons la base de données que vous êtes tous être égal à.
Juste comme ça et appuyez sur entrer pour vérifier si c'était.
Aller faire ce droit ici en fait ici.
Annulez ce processus de journal.
Papa envie.
Et cela doit correspondre à la base de données que vous connaissez.
Et si nous voyons ce Mongar D-B Colon blah blah blah hôte local de Canvey 10 cracher de retour ou imprimé alors nous savons que nous avons mis en place avec succès la base de données de développement que vous connaissez.
Alors voyons ce qui se passe nœud.
Oui, nous allons voir qu'il a été imprimé ici.
Je n'ai jamais dit d'imprimer localhost.
Vous pouvez faire semblant.
J'ai dit que la base de données des variables d'environnement que vous êtes en place.
Donc, maintenant tout ce que nous devons faire est de dire Mangeshkar se connecter à la base de données NVI processus.
Vous IRA et puis sur Heroku, nous devons aller base de données de mise à jour que vous savez pour être ce géant de laboratoire Mongo Vous êtes tous de la corde, mais nous voulons seulement que cela se produise sur Heroku.
Nous voulons laisser cela seul sur le nuage neuf.
Alors assurez-vous qu'il fonctionne de façon vocalise un redémarrage.
Génial.
Allons à notre version correcte ici rafraîchir et nous obtenons toujours le code local Heroku bien sûr est inchangé parce que nous n'avons pas poussé n'importe quel code à Heroku.
Donc, maintenant, si nous sauvegardons ceci et ajoutez et commettre mettez à jour le vous IRL obtenir pousser Heroku M ..
Si nous essayons d'exécuter la version Heroku dès maintenant si je dès que cela finit au moins si j'essaie de rafraichir cette page, je vais avoir une erreur parce que Heroku sont les serveurs qui seraient en mesure de trouver l'étude de processus et la base de données vidette Vous savez parce que ce n'est pas mis en place.
Donc, juste pour vous montrer que l'actualisation pourrait prendre un peu et ils devraient obtenir des erreurs d'application et tandis que ça va là-bas, nous allons.
Erreur d'application à nouveau si vous voulez vraiment savoir exactement ce qui se passe.
C'est Heroku logs et vous pouvez voir ici je ne sais pas comment utile le message d'erreur que nous recevons sera honnêtement.
Voyons voir.
Ce pourrait être un de ces messages qui ne vous dit pas exactement ce que vous aviez espéré mais il nous dit Mongar D-B il ya une erreur.
Yesso ne mentionne pas explicitement que cette base de données que vous êtes est un problème parce que ce qui se passe réellement est qu'il tente de se connecter à une chaîne vide très probablement qui techniquement n'est pas un problème, sauf pour le fait qu'il n'ya pas de base de données Situé à la vous êtes une chaîne vide.
C'est donc un message d'erreur inattendu.
Je vous dis cependant que le problème est que nous n'avons pas mis en place un processus ou que nous n'avons pas mis en place la variable d'environnement sur Heroku.
Donc, pour faire cela il ya quelques façons différentes nous pouvons le faire si nous allons à Heroku lui-même.
Je vais probablement devoir me reconnecter ici, je rafraîchis la page.
Non, je n'avais pas besoin de me recoucher.
Voici notre application.
Eh bien, si nous entrons et nous entrons dans les paramètres, je crois qu'il est.
Et puis continuez à faire défiler vers le bas ou aller à config variables.
Nous pouvons ajouter une variable ici.
Donc, nous voulons base de données vous Earl à être cette chaîne géante.
Je l'ai copié et cliquez sur Ajouter.
Et si nous revenons maintenant, essayez de rafraîchir la page.
Il fonctionne parfaitement bien.
C'est donc une façon de le faire.
Je vous ai montré comment aller sur Heroku et ajouter dans une base de données valeur clé de base de données Erlass et la clé ou le nom de la variable de la variable d'environnement, puis une valeur.
C'est une façon de le faire l'autre façon de le faire est par le biais de la ligne de commande, vous pouvez exécuter une commande.
Nous pouvons le faire ici.
J'ai le numéro
J.S. Les dossiers de soutien ouvrent sur Heroku cette ligne ensemble de colon de configuration de Heroku et puis la valeur égale de clés.
Donc, je vais juste copier ce premier bit si nous voulons, je ne vais pas vraiment le faire.
Le Je ne vais pas frapper entrer, mais je veux juste vous montrer que ce serait Heroku config Kolin ensemble et puis base de données que vous êtes l égal et puis nous avons eu pâte que vous êtes en place.
Mais je vais le faire.
Donc, une autre chose que je n'ai pas encore mentionné, c'est qu'il ya une autre bonne raison pour utiliser les variables d'environnement qui est qu'ils sont cachés là, ils ne sont pas exposés à ce que ce sont les développeurs si vous mettez ce code sur un bon hub.
Nous ne voulons pas avoir notre base de données vous rl ici bien sûr ou si vous connaissez déjà ma base de données que vous êtes.
Mais ce n'est pas évidemment une application réelle.
Mais si c'était une application réelle, même si c'est une application open source ou des parties de mon code ou open source je ne veux pas exposer mes données ou ma base de données, vous êtes à tous ceux qui regarde le code.
Donc, en ayant cette ligne ici Mongar démarrer le processus de connexion que la base de données NV point vous arow ce n'est plus un problème.
Pour que ce soit tout ce qu'un développeur verrait ou quiconque naviguant sur le code à la maison et ils devraient mettre en place leur propre base de données.
Vous utilisez tous des variables d'environnement.
D'ACCORD.
Reprenons donc ce que nous avons fait.
Nous avons commencé par avoir le problème d'une base de données pour le développement et la production d'une base de données partagée pour corriger cela.
Nous configurons localement nos variables d'environnement URL de base de données sur le nuage neuf et sur deux valeurs différentes pour la même variable.
Et puis nous avons accédé à cette variable la variable d'environnement en utilisant le processus que la base de données ENVI vous IRL et nous nous connectons à cela.
Nous avons donc deux résultats.
Une chose que je vais mentionner est qu'il vaut la peine d'établir une valeur par défaut.
Alors disons que j'ai en quelque sorte vissé mon application si je redémarrer mon ordinateur.
Je ne sais pas que je réinitialise cet espace de travail dans ma variable d'environnement est allé ou j'envoie ceci à quelqu'un et je veux qu'ils aient je ne connais pas une base de données par défaut qu'ils pourraient utiliser juste pour le faire pour que le code doesn 'T rupture complète si je n'ai pas explicitement mis en place.
Ce que je peux faire, c'est ajouter une petite sauvegarde, donc nous allons faire une variable et nous allons simplement l'appeler.
Vous êtes tous égaux et nous allons faire le processus commencé dans la base de données vous êtes réel ou.
Et puis nous allons mettre un peu vous êtes là donc nous allons faire ce qui était si vous êtes ELLYARD déjà perdu.
Te voilà.
Donc, ce sera juste une sauvegarde.
Donc, encore une fois ce qui se passe ici, c'est que ce n'est pas obligatoire ne change pas la fonctionnalité, mais si, pour une raison quelconque, ma variable d'environnement a été bousillé ou il n'existait pas.
Plutôt que de briser le code ce qui va arriver, c'est que ce que vous êtes tous variable, il va être égal à la variable d'environnement si elle existe.
Si c'est une chaîne vide ou si elle n'existe pas, il va être égal à ce qui est juste notre sauvegarde.
Dans ce cas sur le nuage neuf, il ya exactement la même chose.
Ce n'est vraiment pas obligatoire à nouveau.
C'est juste une sorte de bonne pratique pour avoir au cas où quelque chose allait mal.
Mais je vous le montre simplement parce que c'est assez courant de voir cela aussi.
D'ACCORD.
Donc, une sorte de long winded ou pas de façon indirecte d'aborder cela, mais tout cela résume au fait que nous voulons bases de données différentes processus que dans la base de données vidette vous IRL est la façon dont nous accédions aux variables d'environnement à partir d'une application de noeud.
Vous voulez rendre clair que les variables d'environnement ne sont pas une chose nœud ou une chose javascript.
Ruby applications rails applications applications Python, ils tous peuvent accéder aux variables d'environnement et dans tout ce qu'ils ressemblent relativement simple similaire à cela il arrive juste que dans le noeud vous écrivez processus dans vi dans d'autres langues comme Ruby.
Vous verrez souvent quelque chose comme la base de données ENV que vous connaissez.
Donc, c'est un concept universel, il n'est pas un nœud spécifique et il est universel à travers toutes sortes d'applications ainsi.
Vous ne l'utilisez pas simplement pour que les URL de base de données l'utilisent chaque fois que vous le souhaitez.
Il ressemble à une faute de frappe ici.
De toute façon, il devrait être localhost.
Utilisez-le quand vous voulez avoir des informations différentes entre vos différents environnements de développement ou de production.
Vous pouvez également utiliser cette fonction lorsque vous souhaitez masquer ou masquer les informations de quelqu'un et obtenir de l'aide, par exemple.
Donc, si vous aviez votre paypal ou votre carte de crédit Strype traitement de l'information API à l'intérieur de votre application parce que vous en avez besoin pour le code.
Eh bien, si vous voulez partager votre actualité obtenir comment vous évidemment ne veulent pas être poussant cela.
Donc, ce que vous pouvez faire est de créer une variable d'environnement et faire quelque chose comme processus.
Ian VI est mort de super informations sensibles et c'est une façon de contourner ce problème de vouloir partager votre code le rendre public mais aussi ne pas vouloir partager vos informations super sensibles où quelqu'un pourrait prendre votre clé de votre API et exécuter une facture de milliers et Des milliers de dollars qui se produit réellement certaines des grandes entreprises sont beaucoup mieux sur la police que.
Ainsi, Amazon, par exemple, si vous disposez de votre clé API Amazon ou de votre information AWOS, vos informations sur les services Web Amazon Web Services sur get hobe, ils sauront réellement et ils vous enverront un message disant que vous devez prendre ceci immédiatement ou vont désactiver il.
Quelqu'un pourrait facturer des milliers et des milliers de dollars à cela.
Ils pourraient vous utiliser ou fondamentalement votre compte pour exécuter un énorme projet de loi qu'ils n'ont pas à payer.
Se produit relativement souvent.
J'ai entendu parler de certains étudiants ayant ce problème et de la mienne et la promesse, mais certainement, j'ai entendu parler de cela avant.
D'accord.
Donc, traiter l'envie est la façon dont nous accédons aux variables d'environnement.
Nous avons deux bases de données mis en place camp a maintenant déployé deux bases de données différentes.
Ils ne partagent aucune information qui est comment nous le voulons.