Tudo bem.
Bem vindo de volta.
Então, neste vídeo, vamos abordar o problema que eu mencionei no último vídeo, que
é agora, estamos usando um banco de dados entre o nosso ambiente de desenvolvimento da nuvem local nove e nosso
ambiente de produção no Heroku.
Portanto, nosso código implantado está usando o mesmo banco de dados que nosso campo de testes é qual não é realmente
uma ótima idéia.
você sabe se nós temos um grande aplicação do nosso banco de dados principal com todos os nossos usuários implantados.
As coisas funcionam bem, não é um problema no sentido de que o nosso código está quebrado ou que não podemos conseguir usando esse
caminho, mas na verdade não é uma boa prática porque não queremos ter um banco de dados onde
Não queremos testar coisas e aparafusar e adicionar novos recursos, excluindo acidentalmente entradas no banco
de dados ou excluindo todo o banco de dados.
Em nosso ambiente de desenvolvimento.
Então, você deseja manter esses separados.
E apenas para demonstrar agora o que estamos acontecendo.
Lembro-me de que o que fizemos foi atualizar o nosso código em vez de usar os hosts locais.
Você não pode alimentar 10 ou qualquer banco de dados que você ou você tenha tido lá, mas a versão local na
nuvem 9 nós atualizamos para ser Mangu lab.
E esta é a nossa instância de laboratório Mongo e é o mesmo que temos esta execução local agora.
E em Heroku, então vou atualizar a página em ambos.
Esta é a implantação do Heroku, como você pode ver, temos uma praia de rodeio e temos praia de rodeio novamente apenas para provar
que eles estão conectados, é claro.
Vamos adicionar um novo acampamento aqui.
O nome para este será Kirby cove.
Eu vou usar esta imagem aqui, que é uma que eu levei algumas noites atrás plug totalmente sem vergonha.
Nada que você possa fazer sobre isso.
Então eu vou copiar essa pasta que aqui e simplesmente colocar blah blah blah auto completo.
Obrigado.
Clique no botão Chrome para enviar.
Tudo bem, então temos isso aqui em Heroku.
E eu atualizo.
Eu tenho o mesmo código Kirby criado aqui localmente.
Portanto, não é mesmo sobre eventos catastróficos.
Quando um desenvolvedor poderia excluir acidentalmente todo o banco de dados.
Vamos ver isso.
Digamos que queria testar um recurso que queria saber, é excluir o funcionamento da minha rota de exclusão.
Bem, se eu entrar aqui e se eu excluir algo que não tenha iniciado, mas se eu excluí-lo, eu também o
exclui da produção, o que significa que estou excluindo os dados reais de alguém que nunca
são bons.
Portanto, é realmente uma boa idéia ter bancos de dados separados.
Portanto, uma maneira de corrigir esse problema é apenas voltar para a nuvem 9 e apenas na mudança nove nuvens.
Bem, estamos usando aqui para que agora estamos usando a versão local do campo local novamente para salvar
o reinício do servidor aqui e agora na atualização da nuvem 9 5.
Você verá que estamos usando a versão antiga ou o que estávamos usando antes da versão local e
no Heroku ainda estamos usando a instância do laboratório de Monga, porque agora não estão sincronizados.
Nós mudamos o que fizemos localmente na nuvem 9, que não o fizemos.
E isso é bom.
se eu quiser deixar de dizer, adicionei um novo recurso, mudo o C S S e quero atualizar isso no Heroku.
Isso funcionará, é válido, mas é um pouco irritante porque,
Bem, então, eu vou ter que descobrir o que vou fazer sobre o nosso banco de dados que você conhece.
Eu vou ter que comentar esse comentário com isso ou comprometer-se novamente em descomentar que um salvar e comandar tudo isso
empurrá-lo para Heroku E, em seguida, se eu quisesse adicionar um novo recurso localmente novamente ou
testar algo.
Eu comento isso e descomente isso e é só que não é realmente uma boa solução.
No entanto, há outra solução ou outra abordagem que podemos tomar.
escrever algum código que diga se estamos em produção executada ou configuramos o banco de dados para você.
E, basicamente, o que faremos é
Caso contrário, configure isso como este aqui.
Agora, na verdade, não será uma afirmação if.
E não estamos tecnicamente verificando se estamos em produção se estivermos ou se estivermos em Heroku.
É um pouco diferente.
O que vamos fazer é usar algo chamado variáveis ​​de ambiente.
Então nós os vimos antes.
revisa e todo o processo do aplicativo Express, envidia o processo da porta que o EMV IP.
Esta pequena linha, aqui, que
Então, o que isso significa aqui mesmo.
E eu examinei isso brevemente, mas acho que você terá um pouco mais de senso agora que você tem mais
alguma experiência ao seu dispor.
O que isso se refere é o ambiente em que este código está sendo executado.
Então, o processo em que você inveja a porta na nuvem nove talvez seja diferente do processo que a porta
de ponto em seu Roku provavelmente é IP definitivamente é.
de adicionar variáveis ​​que não são codificadas de forma difícil que mudam com base no ambiente em que estão sendo executados.
Portanto, essas são maneiras
Então, poderíamos colocar algo como 80 80 aqui.
Mas, claro, isso é codificado.
Isso não é dinâmico.
Isso nos permite ter variáveis ​​que respondem ao meio ambiente e no nó em javascript, na verdade, será
apenas um nó.
Eles sempre começam com o processo D-NV, assim é como você acessa.
E então o nome da variável.
Então, o que vamos fazer aqui é ter uma variável de ambiente que irá chamar o banco de dados
Yoro e, no Heroku, vamos configurar o banco de dados, você pode ser essa coisa longa aqui e então tudo terá que
fazer é basicamente escrever
processo em o banco de dados que você é.
E isso irá se referir ao URL correto para o nosso ambiente dado.
E então faremos o mesmo aqui.
Estamos bem definidos na nuvem nove banco de dados você Arel para ser Mongar D-B colon barra-nos localhost ela pode
Campfield 10.
Então, novamente, a idéia é que podemos criar uma variável de ambiente que não mostrei como fazer.
É assim que você acessa.
Mas lembre-se que isso vem de fora desta aplicação.
Isso vem do aplicativo atual ou do ambiente real, no servidor no qual estamos
executando o código.
fazemos isso, eu vou começar por terminar aqui e eu vou criar uma nova variável de ambiente na
linha de comando no ambiente quando um tipo exportar é um novo comando e então eu ' Vou escrever
minha variável de ambiente, que geralmente a convenção tem que fazer em todos os limites.
Então, para demonstrar como
Como você pode ver aqui, a porta IP.
Então, vamos fazer a base de dados.
Vocês são todos iguais e vamos começar a redefini-lo igual ao que queremos executar na nossa nuvem nove instâncias, o que
queremos que o banco de dados seja igual.
Assim como isso e pressione
enter para verificar se isso aconteceu.
Vou fazer isso aqui mesmo aqui mesmo.
Cancelar esse processo de log.
Papai inveja.
E isso precisa combinar a base de dados que você conhece.
E se vemos que o anfitrião local de Canmore 10 de Mongar D-B, o blah blah blah, cuspiu ou imprimiu,
então sabemos que nós estabelecemos com sucesso o banco de dados de desenvolvimento que você conhece.
Então, vamos ver o que acontece nó.
Sim, vamos ver que foi impresso aqui.
Eu nunca disse que imprimi o localhost.
Você pode fingir.
Eu disse o banco de dados de variáveis ​​de ambiente que você está fazendo.
Então, agora, tudo o que precisamos fazer é dizer que Mangeshkar se conecta para processar o banco
de dados NVI.
Você IRA e, em seguida, em Heroku, precisamos ir atualizar o banco de dados que você conhece para ser este gigante do laboratório Mongo. Você é toda a corda,
mas nós só queremos que isso aconteça no Heroku.
Queremos deixar isso sozinho na nuvem nove.
Então, vamos ter certeza de que funciona de modo que vocalise seja reiniciado.
Ótimo.
Vamos para a nossa versão correta aqui atualizar e ainda estamos recebendo o código local Heroku, é claro, está
inalterado porque não introduzimos nenhum código para o Heroku.
Então, agora, se salvarmos isso e adicione e
comente, diga, atualize o
you IRL get push Heroku M. Se tentarmos e executar a versão Heroku agora se eu, assim
que isso terminar, pelo menos, se eu tentar e atualizar esta página, eu vou ter um erro porque Heroku são
os servidores que poderiam encontrar o estudo do processo e o banco de dados vidette. Você sabe porque não está configurado.
Então, apenas para mostrar que a atualização
pode demorar um pouco e eles devem ter um erro de aplicação e, enquanto isso vai lá, nós vamos.
Erro de aplicação novamente se você realmente quiser saber exatamente o que está acontecendo.
É Heroku logs e você pode ver aqui, eu não sei o quanto a mensagem de erro
que nós obteremos será honestamente.
Vamos ver.
Esta pode ser uma dessas mensagens
que não lhe dizem exatamente o que você esperava, mas está nos dizendo Mongar D-B, há um erro.
Yesso não menciona explicitamente que esse banco de dados que
você é é um problema, porque o que realmente acontece é que está tentando se conectar a uma cadeia vazia provavelmente que, tecnicamente, não é
um problema, exceto pelo fato de que não há banco de dados localizado no você é uma string vazia.
Então, é uma espécie de mensagem de erro inesperada.
Então, estou lhe dizendo que o problema é
que não criamos um processo ou que não configuramos a variável de ambiente no Heroku.
Então, para fazer isso, existem algumas maneiras diferentes de fazê-lo se formos ao próprio Heroku.
Provavelmente eu preciso fazer o login novamente. Eu atualizo a página.
Não, não precisava me acostumar.
Aqui está o nosso aplicativo.
Bem, se entramos e entramos em configurações, acredito que seja.
E, em seguida, continue a deslizar para baixo ou vá para as variáveis ​​de configuração.
Podemos adicionar uma variável aqui.
Então queremos banco de dados que Earl seja essa corda gigante.
Eu copiei e clique em adicionar.
E se voltarmos agora tente atualizar a página.
Isso funciona perfeitamente.
Então, essa é uma maneira de fazê-lo.
Eu mostrei como seguir o Heroku
e adicionar um banco de dados de par de valores chave você Erlass e a chave ou o nome da variável variável de ambiente e, em seguida, um valor.
Essa é uma maneira de fazê-lo na outra forma de fazê-lo é através da linha de comando, você pode executar um comando.
Nós podemos fazer isso aqui.
Eu tenho o No.
J. S. Os documentos de suporte abrem na Heroku esta linha, o conjunto de dois pontos de configuração e, em seguida, a chave é igual ao valor.
Então, vou copiar esse primeiro bit se quisermos, não vou fazer isso.
Eu não vou entrar, mas eu só quero mostrar que seria Heroku config
Kolin set e, então, banco de dados você é l igual e depois pegamos o que você está fazendo.
Mas eu vou fazer isso.
Então, outra coisa que eu
ainda não mencionei é que há outra boa razão para usar as variáveis ​​de ambiente,
que é que há escondidas lá, elas não estão expostas a qualquer desenvolvedor se você colocar este código no bom hub.
de dados que você é.
Nós não queremos ter nosso banco de dados que você esteja aqui, é claro, ou se você já não conhece meu banco
Mas isso não é obviamente um aplicativo real.
Mas se este fosse um aplicativo real, mesmo
que seja um aplicativo de código aberto ou partes do meu código ou código aberto, não quero estar expondo
meus dados ou meu banco de dados você está fora de todos que olha o código.
Então, tendo essa
linha aqui Mongar, comece o processo de conexão que o banco de dados de pontos de NV que arow deixou de ser um problema.
banco de dados.
Então, isso é tudo o que um desenvolvedor veria ou qualquer pessoa navegando no código em casa e eles teriam que configurar seu próprio
Vocês estão todos usando variáveis ​​de ambiente.
ESTÁ BEM.
Então vamos recapitular o que fizemos.
Começamos por ter o problema
do problema de um banco de dados para desenvolvimento e produção de um banco de dados compartilhado para corrigir isso.
Nós configuramos nossas
variáveis ​​de ambiente de URL do banco de dados localmente na nuvem nove e em dois valores diferentes para a mesma variável.
E então, acessamos essa variável
da variável de ambiente usando o processo que o banco de dados ENVI você IRL e nós nos conectamos a isso.
Então, temos dois resultados.
Uma coisa que vou mencionar é que vale a pena configurar um valor padrão.
Então, digamos que, de alguma forma, estraguei meu aplicativo se eu reiniciar meu computador.
Eu não sei que eu restaurei este espaço de trabalho na minha variável de ambiente se foi ou eu
estou enviando isso para alguém e eu quero que eles tenham Eu não conheço um banco de dados padrão que eles poderiam
usar apenas para fazê-lo de modo que o código não Não estou completamente quebrado se não tiver configurado explicitamente isso.
O que posso fazer é adicionar um pequeno backup para que possamos fazer uma variável e nós apenas chamaremos isso.
Você é todo igual e nós vamos fazer o processo iniciado no banco de dados que você é real ou.
E então vamos colocar alguns que você está lá, então vamos fazer o que é que você é ELLYARD já perdeu.
Aí está você.
Então, isso só será um backup.
Então, novamente, o que está acontecendo aqui é
que não é obrigatório, não altera a funcionalidade, mas se, por algum motivo, minha variável de ambiente se estragou ou não existia.
tudo variável, será igual à variável de ambiente se existir.
Em vez de quebrar o código, o que acontecerá é que isso é
Se é uma seqüência vazia embora ou
se não existir, então, será igual a isso, que é apenas nosso backup.
Neste caso, na nuvem nove, existem exatamente a mesma coisa.
Na verdade, não é obrigatório novamente.
É apenas uma boa prática ter no caso de algo ter errado.
Mas, na verdade, estou apenas mostrando isso porque é muito comum ver isso também.
ESTÁ BEM.
Tão gentil
tipo de longo caminho ou nenhuma maneira torrencial de abordar isso, mas tudo se resume ao fato de que queremos que os bancos
de dados diferentes processem que, no banco de dados do vidente, IRL é como acessamos variáveis ​​de ambiente a partir de um aplicativo de nó.
Você quer deixar claro que as variáveis ​​de ambiente não são uma coisa de nó ou uma coisa de JavaScript.
Aplicativos de trilhos de aplicações Ruby Aplicativos Python todos eles podem acessar
variáveis ​​de ambiente e, em todos eles, parecem relativamente simples, isso acontece que no
nó você escreve processo em vi em outros idiomas como o Ruby.
Muitas vezes você verá algo como o banco de dados ENV que você conhece.
Portanto, é um conceito universal que não é uma coisa
específica de nó e é universal em todos os tipos de aplicativos também.
Você não usa apenas isso para URLs de banco de dados, use-o sempre que desejar.
Parece um erro de digitação aqui.
De qualquer forma, deve ser o localhost.
Use isso sempre que quiser
ter informações diferentes entre o desenvolvimento ou a produção de diferentes ambientes.
Você também usa isso quando quiser ocultar ou obscurecer informações de alguém e obter ajuda, por exemplo.
Então, se você tivesse seu paypal ou as informações da API de
processamento de cartão de crédito da Strype dentro de seu aplicativo porque você precisava do código.
Bem, se você quiser compartilhar sua atuação atual, como você, obviamente, não quer estar empurrando isso.
Então, o que você pode fazer é criar uma variável de ambiente e fazer algo como processo.
Ian VI morreu informações super sensíveis e essa é uma maneira de contornar
esse problema de querer compartilhar seu código torná-lo público, mas também não querendo compartilhar suas informações super sensíveis onde alguém poderia levar
sua chave de API e executar uma conta de milhares e milhares de dólares
que realmente acontecem, algumas das maiores empresas são muito melhores em policiar isso.
Então, por exemplo, por exemplo, da Amazon, se você tiver sua chave da
API do Amazon ou sua informação do AWOS, seus serviços da Web da Amazon Web Services informam sobre o hobe, eles realmente saberão e
eles lhe enviarão uma mensagem dizendo que você precisa retirar isso imediatamente ou vai desativar isto.
Alguém poderia cobrar milhares e milhares de dólares para isso.
Eles poderiam usar você ou basicamente sua conta para fugir de uma enorme conta que eles não precisam pagar.
Acontece com relativa frequência.
Ouvi falar de alguns alunos que
têm esse problema e dos meus e prometem, mas definitivamente já ouvi falar disso antes.
Tudo bem.
Então, processar a inveja é como acessamos variáveis ​​de ambiente.
Temos dois bases de dados criados no campo já implementou dois bancos de dados diferentes.
Eles não compartilham nenhuma informação que é como nós a queremos.
Impressionante