Todo bien.
Dar una buena acogida.
Entonces, en este video vamos a abordar el problema que mencioné en el último
video, que es que ahora estamos usando una base de datos entre nuestro entorno de desarrollo de la nube local y
nuestro entorno de producción en Heroku.
Entonces nuestro código desplegado está usando la misma base de datos que nuestro campo de pruebas, que realmente no es
una gran idea.
datos donde se sepa si tenemos una gran aplicación nuestra base de datos principal con todos nuestros usuarios implementados.
Las cosas funcionan bien, no es un problema en el sentido de que nuestro código está roto o que no podemos usarlo de
esta manera, pero realmente no es una buena práctica porque no queremos tener una base de
No queremos estar probando cosas y atornillando y agregando nuevas funciones eliminando accidentalmente entradas en la
base de datos o eliminando toda la base de datos.
En nuestro entorno de desarrollo
Entonces quieres mantenerlos separados.
Y solo para demostrar en este momento lo que estamos pasando.
Recuerdo que lo que hicimos fue actualizar nuestro código en lugar de usar los hosts locales.
No puede alimentar 10 o la base de datos que tenía o tenía allí, pero la versión local en la nube 9
la actualizamos para que sea Mangu lab.
Y esta es nuestra instancia de Mongo lab y es la misma que tenemos funcionando localmente ahora.
Y en Heroku, así que solo actualizaré la página en ambos.
Este es el despliegue de Heroku ya que puedes ver que tenemos una playa de rodeo y tenemos playa de rodeo solo para
demostrar que están conectados, por supuesto.
Agreguemos un nuevo campamento aquí.
El nombre de este será Kirby Cove.
Voy a usar esta imagen aquí, que es una que tomé hace unas noches totalmente sin vergüenza.
No puedes hacer nada.
Así que voy a copiar ese engrudo que aquí y simplemente puse blah blah blah auto completo.
Gracias.
Chrome haz clic en enviar.
De acuerdo, tenemos esto aquí en Heroku.
Y me actualizo
Tengo el mismo código de Kirby creado aquí localmente.
Entonces ni siquiera se trata de eventos catastróficos.
Cuando un desarrollador podría eliminar accidentalmente toda la base de datos.
Veamos eso.
Digamos que quería probar una característica que quería saber es eliminar trabajando en mi ruta de eliminación.
Bueno, si entro aquí y si eliminé algo que no he iniciado sesión, pero si lo eliminé, también lo eliminé
de la producción, lo que significa que estoy borrando datos reales de alguien que nunca
son buenos.
Entonces, realmente es una buena idea tener bases de datos separadas.
Entonces, una forma de solucionar este problema es volver a la nube 9 y solo cambiar a la nube nueve.
Bueno, estamos usando aquí, así que ahora estamos usando la versión localhost del campamento nuevamente para
guardar reiniciar el servidor aquí y ahora en Cloud 9 5 refresh.
Verás que estamos usando la versión anterior o lo que estábamos usando antes de la versión local y
en Heroku todavía estamos usando la instancia de Monga Lab porque ahora no están sincronizados.
Tenemos cambios que realizamos localmente en la nube 9 que no le hemos presionado.
Y esto está bien.
molesto porque si quiero añadir una nueva característica, cambio el C S y quiero actualizarlo en Heroku.
Esto funcionará, es válido, pero es un poco
Bueno, entonces voy a tener que descubrir qué voy a hacer con nuestra base de datos.
Voy a tener que comentar este comentario o volver a comprometerme a descomentar ese guardado y ordenar todo
eso a Heroku Y luego, si quisiera agregar una nueva característica localmente nuevamente o
probar algo.
Comenta eso y elimino el comentario de esto y simplemente no es realmente una buena solución.
Sin embargo, hay otra solución u otro enfoque que podemos tomar.
hacer es escribir un código que diga si estamos en producción o si configuramos la base de datos.
Y básicamente, lo que vamos a
De lo contrario, configúralo para que sea aquí.
Ahora no va a ser una declaración if.
Y técnicamente no estamos verificando si estamos en producción si estamos dentro o si estamos en Heroku.
Es un poco diferente.
Lo que vamos a hacer es usar algo llamado variables de entorno.
Así que los hemos visto antes.
revisa y cada proceso de la aplicación Express envidia el proceso del puerto que IP EMV.
Esta pequeña línea aquí que
Entonces, ¿qué significa esto? ¿Qué es esto?
Y repasé esto brevemente, pero creo que tendréis un poco más de sentido ahora que
ya tenéis más experiencia.
A lo que se refiere es al entorno en el que se está ejecutando este código.
Entonces el proceso que envidiaste al puerto en la nube nueve puede ser diferente de procesar ese puerto
de puntos en su Roku, probablemente sea IP definitivamente.
son formas de agregar variables que no son cosas codificadas que cambian según el entorno en el que se están ejecutando.
Así que estas
Entonces podríamos haber puesto algo así como 80 80 aquí.
Pero, por supuesto, está codificado.
Eso no es dinámico.
Esto nos permite tener variables que responden al entorno y en el nodo en JavaScript, en realidad
solo un nodo.
Siempre comienzan con el proceso D-NV, así es como se accede a ellos.
Y luego el nombre de la variable.
Entonces, lo que vamos a hacer aquí es tener una variable de entorno que llamará a la base de datos
Yoro y en Heroku vamos a configurar la base de datos que puede ser tan larga aquí y todo lo que tendrá que
hacer es básicamente escribir
el proceso en la base de datos que eres
Y eso se referirá a la URL correcta de tu entorno.
Y luego haremos lo mismo aquí.
Estamos bien establecidos en la base de datos de la nube nueve Arel para que sea Mongar D-B colon nos corte localhost ella
puede Campfield 10.
Entonces, de nuevo, la idea es que podemos crear una variable de entorno que no te he mostrado cómo hacerlo.
Así es como tienes acceso a ellos.
Pero recuerda que esto viene de fuera de esta aplicación.
Esto proviene de la aplicación real o del entorno real del servidor en el que
estamos ejecutando el código.
hacemos que esto funcione, voy a empezar yendo hasta aquí cerrando y voy a crear una nueva variable de
entorno en la línea de comando en el entorno cuando un tipo exportar es un nuevo comando y luego '
Voy a escribir mi variable de entorno, que generalmente la convención tiene que hacer en mayúsculas.
Entonces, para demostrar cómo
Como puede ver aquí el puerto IP.
Así que haremos base de datos.
Todos son iguales y vamos a comenzar a restablecerlo de manera similar a lo que queremos ejecutar en nuestra instancia de la nube en la
que queremos que la base de datos esté igual.
Solo así y presiona enter
para comprobar si eso fue así.
Voy a hacer esto aquí mismo en realidad aquí mismo.
Cancele ese proceso de registro.
Papi, envidia
Y esto necesita coincidir con la base de datos que conoces.
Y si vemos que este anfitrión local de Canvey 10 blau blah blah de Mongar D-B es devuelto o impreso,
sabremos que hemos establecido con éxito la base de datos de desarrollo que usted conoce.
Entonces, veamos qué sucede con el nodo.
Sí, vamos a ver que fue impreso aquí.
Nunca dije imprimir localhost.
Puedes fingir
Dije que la base de datos de variables de entorno está activa.
Así que ahora todo lo que tenemos que hacer es decir Mangeshkar conectarse para procesar la base
de datos NVI.
Usted IRA y luego en Heroku tenemos que ir a la base de datos de actualización que usted sabe que es este gigante del laboratorio de Mongo. Usted es
todo cuerda, pero solo queremos que eso suceda en Heroku.
Queremos dejar esto solo en la nube nueve.
Así que solo asegurémonos de que funcione para vocalizar un reinicio.
Estupendo.
Vayamos a nuestra versión correcta aquí. Actualicemos y todavía recibimos el código local. Por supuesto, Heroku no ha
cambiado porque no hemos enviado ningún código a Heroku.
Entonces, si guardamos esto, agreguemos y confirmemos,
digamos, actualizar el
IRL get push Heroku M. Si tratamos de ejecutar la versión de Heroku en este momento,
si tan pronto como esto termine al menos, si intento actualizar esta página, tendré un error porque Heroku es el
servidor que podría encontrar el estudio de proceso y la base de datos de videos. usted sabe porque no está configurado.
Así que solo para mostrarles que la
actualización puede demorar un poco y que deben obtener un error de aplicación y mientras eso suceda, vamos.
Error de aplicación nuevamente si realmente quiere saber exactamente qué está sucediendo.
Son registros de Heroku y puedes ver aquí. No sé cuán útil será el mensaje
de error que recibamos.
Veamos.
Este podría ser uno de esos
mensajes que no te dicen exactamente lo que esperabas, pero nos dice que hay un error en Mongar D-B.
Yesso no menciona explícitamente que esta base de datos es
un problema porque lo que realmente está sucediendo es que está intentando conectarse a una cadena vacía lo más probable es que técnicamente no sea un problema,
excepto por el hecho de que no hay una base de datos ubicado en el que eres una cadena vacía.
Entonces es una especie de mensaje de error inesperado.
Así que les digo que el problema es que
no hemos configurado un proceso o que no hemos configurado la variable de entorno en Heroku.
Entonces, para hacer eso, hay algunas maneras diferentes en que podemos hacerlo si vamos a Heroku.
Probablemente necesite volver a iniciar sesión. Actualizo la página.
No, no necesitaba acostarme de nuevo.
Aquí está nuestra aplicación.
Bueno, si entramos y entramos en la configuración, creo que sí.
Y luego siga desplazándose hacia abajo o vaya a las variables de configuración.
Podemos agregar una variable aquí.
Entonces queremos que tu base de datos Earl sea esa cadena gigante.
Lo copié y hago clic en agregar.
Y si volvemos ahora, intente actualizar la página.
Funciona perfectamente bien.
Entonces esa es una forma de hacerlo.
Le mostré cómo pasar a Heroku
y agregarle una base de datos de pares de valores clave, Erlass y la clave o el nombre de la variable variable de entorno y luego un valor.
Esa es una forma de hacerlo, a la inversa, a través de la línea de comando puede ejecutar un comando.
Podemos hacer esto aquí mismo.
Tengo el No.
J. S. los documentos de soporte se abren en Heroku esta línea establece Heroku configuración de dos puntos y luego la clave es igual a valor.
Así que copiaré este primer bit si queremos, no voy a hacer eso realmente.
No voy a presionar enter pero solo quiero mostrarte que sería el conjunto de
configuración de Heroku Kolin y luego la base de datos eres igual a mí y luego tenemos que pegar que estás arriba.
Pero voy a hacer eso.
Otra cosa que no he
mencionado aún es que hay otra buena razón para usar variables de entorno, que es
que allí están ocultas, y no están expuestas a lo que sean desarrolladores si colocas este código en un buen centro.
mi base de datos.
No queremos tener nuestra base de datos aquí, por supuesto, o si usted ya sabe que no está en
Pero esta no es obviamente una aplicación real.
Pero si se trataba de una aplicación
real, incluso si es una aplicación de código abierto o partes de mi código o código abierto, no
quiero exponer mis datos o mi base de datos a todos los que miran el código.
Entonces, al
tener esta línea aquí, Mongar iniciará el proceso de conexión que la base de datos de puntos NV que ya no es un problema.
propia base de datos.
Para que esto sea todo lo que vería un desarrollador o cualquier persona que navegue por el código al llegar a su casa y tendrían que configurar su
Todos están usando variables de entorno.
DE ACUERDO.
Así que vamos a recapitular lo que hicimos.
Empezamos teniendo el problema
del problema de una base de datos para desarrollo y producción una base de datos compartida para arreglar eso.
Configuramos nuestras variables
de entorno URL de base de datos localmente en la nube nueve y en dos valores diferentes para la misma variable.
Y luego accedimos a esa
variable la variable de entorno utilizando el proceso que ENVI base de datos que IRL y nos conectamos a eso.
Entonces tenemos dos resultados.
Una cosa que mencionaré es que vale la pena establecer un valor predeterminado.
Entonces, digamos que de alguna manera atornillé mi aplicación si reinicio mi computadora.
No sé si reinicié este espacio de trabajo en mi variable de entorno se fue o lo estoy
enviando a alguien y quiero que lo tengan. No sé una base de datos predeterminada que podrían usar solo para
que el código no lo haga. No se romperá por completo si no configuré esto de forma explícita.
Lo que puedo hacer es agregar un pequeño respaldo, así que crearemos una variable y la llamaremos.
Todos son iguales y vamos a hacer el proceso iniciado en la base de datos que usted es real o.
Y luego pondremos algo de lo que está por ahí, así que hagamos lo que sea, ya que ELLYARD ya lo perdió.
Ahí tienes.
Entonces esto solo será una copia de seguridad.
Así que, nuevamente, lo que está sucediendo aquí
es que no es obligatorio, no cambia la funcionalidad, pero si por alguna razón mi variable de entorno se estropeó o no existió.
va a ser igual a la variable de entorno si existe.
En lugar de descifrar el código, lo que sucederá es que esto es todo variable,
Si es una cadena vacía, o si no
existe, va a ser igual a esto, que es solo nuestra copia de seguridad.
En este caso, en la nube nueve, hay exactamente lo mismo.
Realmente no es obligatorio de nuevo.
Es una buena práctica tenerla en caso de que algo salga mal.
Pero realmente solo te lo estoy mostrando porque es bastante común ver esto también.
DE ACUERDO.
Es una
forma larga y sin rodeos de acercarse a esto, pero todo se reduce al hecho de que queremos que diferentes bases de
datos procesen que en la base de datos de videos, IRL es cómo accedemos a las variables de entorno desde una aplicación de nodo.
Desea dejar en claro que las variables de entorno no son una cosa de nodo o una cosa de javascript.
Las aplicaciones de Ruby rails aplicaciones de Python todas ellas pueden acceder a variables
de entorno y en general se ven relativamente simples similares a esto, simplemente ocurre que
en el nodo se escribe el proceso en vi en otros lenguajes como Ruby.
A menudo verá algo como la base de datos ENV que conoce.
Por lo tanto, es un concepto universal, no es
específico de un nodo y también es universal en todo tipo de aplicaciones.
No solo usa esto para que las URL de la base de datos lo utilicen en cualquier momento que lo desee.
Parece un error tipográfico aquí.
De cualquier manera, debería ser localhost.
Úselo cuando quiera tener información
diferente entre el desarrollo o la producción de sus diferentes entornos.
También lo usa cuando quiere ocultar u ocultar información de alguien y obtener ayuda, por ejemplo.
Entonces, si tenía su tarjeta de crédito PayPal o su tarjeta de
crédito Strype procesando la información API dentro de su aplicación porque la necesitaba para el código.
Bueno, si quieres compartir tu experiencia actual, obviamente no querrás empujarla hacia arriba.
Entonces, lo que puedes hacer es crear una variable de entorno y hacer algo como proceso.
Ian VI murió información súper sensible y esa es una forma de evitar el
problema de querer compartir su código, hacerlo público, pero también no querer compartir su información súper sensible donde alguien podría tomar su clave
de API y acumular una factura de miles y miles de dólares que en realidad
sucede, algunas de las compañías más grandes son mucho mejores para controlar eso.
Así que Amazon, por ejemplo, si tiene su clave API de Amazon
o su información AWOS, la información de servicios web de Amazon Web Services en realidad lo sabrá y le enviarán un
mensaje que le indicará que debe cancelarlo inmediatamente o que va a deshabilitarlo. eso.
Alguien podría cobrar miles y miles de dólares por esto.
Podrían utilizarlo o, básicamente, su cuenta para ejecutar una gran factura que no tienen que pagar.
Ocurre con relativa frecuencia.
He oído hablar de algunos estudiantes que
tienen ese problema y el mío y prometen, pero definitivamente he oído hablar de eso antes.
Todo bien.
Así que procesar la envidia es cómo accedemos a las variables de entorno.
Tenemos dos bases de datos establecidas. Camp ahora implementó dos bases de datos diferentes.
No comparten ninguna información que es como lo queremos.
Increíble