Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Back end vs Fron end - Vídeo 6 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 9 de julio de 2024 por Mario S.

107 visualizaciones

conexión con la base de datos de mongoDB - mongoose.connect - funciones flecha o anónimas.

Descargar la transcripción

Bueno, en este vídeo vamos a ver cómo hacer la conexión con la base de datos de MongoDB desde nuestro desarrollo, desde nuestro backend. 00:00:01
Como no puede ser de otra forma, tenemos que tener activadas por lo menos el Mongo, ¿vale? 00:00:14
Entonces, si me vengo a el iconito, el botoncillo de Docker, que le hemos, que lo instalamos la extensión, veo que el Mongo lo tengo levantado, ¿vale? 00:00:23
El servicio de Mongo lo tengo levantado, así que podría empezar a trabajar. 00:00:36
De todas formas, bueno, pues ya que tenemos también el Express, por si nos hace falta, también lo voy a levantar, ¿vale? 00:00:40
Ya los tenemos los dos, ya nos podemos poner a trabajar. 00:00:46
Bueno, ¿qué módulo usa Node para hacer esa conexión, entre otras cosas, a nuestra base de datos de Mongo? 00:00:48
Usa un módulo que se llama Mongoose. 00:01:00
¿Vale? Entonces, Mongoose, además de utilizarse para la conexión con la base de datos, 00:01:04
Lo que hace es, por ejemplo, hacer esa plantilla que os he comentado en algún vídeo, para siempre los documentos que estamos guardando en nuestras colecciones de datos, hacerlos siempre con los mismos clave-valor. 00:01:11
No hacer documentos de diferentes tamaños, lo cual sería, para lo que nosotros estamos buscando, algo un poco extraño. 00:01:33
Vale, entonces vamos a hacer primero esa conexión, vamos a ver lo que es o cómo se trabaja con Mongoose 00:01:41
y vamos a ver lo que son las funciones flecha o funciones anónimas que creo que ya las habéis visto pero no lo tengo claro. 00:01:52
Vale, entonces os hago una pequeña explicación y ya está. 00:02:03
Bueno, entonces lo primero que vamos a hacer es venirnos a nuestro fichero de BJS, que le hemos creado justo para implementar las operaciones que vamos a hacer sobre la base de datos. 00:02:09
La primera operación que vamos a hacer es hacer la conexión. Para ello lo primero que tengo que hacer es cargar el módulo de Mongoose. 00:02:23
de Mongoose con Node? Pues como siempre, desde el terminal, el npm y mongoose. Vale, esto 00:02:39
le damos a intro y nos va a hacer la instalación, va a cargar el módulo de Mongoose. Vale, 00:02:56
vale ya lo tendríamos cargado hasta que no hagamos algo con él pues esto no hace nada vale pero ya 00:03:05
lo tenemos cargado entonces qué es lo primero que voy a hacer importar desde o sea en el fichero de 00:03:12
b.js vale importó mongoose from mongoose vale vale entonces a partir de aquí yo empiezo a hacer la 00:03:19
conexión la conexión es algo tan simple como poner mongoose.connet 00:03:32
y le voy a pasar como string 00:03:41
la dirección vale en este caso sería mongo db dos puntos dos barras localhost 00:03:46
porque lo tenemos metido perdón lo tenemos configurado en nuestra máquina como como 00:03:55
el local vale el mongo recordarlo pondría el local host pondría 00:04:07
el nombre de la base de datos que voy a crear y cuidado si nos metemos vamos a poner por ejemplo 00:04:17
vamos a crear una base de datos que se va a llamar 00:04:25
dan2db 00:04:28
dan2db 00:04:30
vale, si 00:04:32
yo hago esta conexión 00:04:34
esta base de datos 00:04:36
ahora mismo no existe 00:04:38
nosotros tenemos, voy a abrir 00:04:39
el localhost 00:04:42
vamos a ver 00:04:46
esto estáis viendo 00:04:49
el navegador 00:04:52
no, si 00:04:54
Vale, vamos a abrir el MongoDB Express, ¿vale? Como siempre nos pide el nombre de usuario que le pusimos root y el password que le pusimos root, ¿vale? 00:04:58
Entonces vemos que no tenemos ninguna base de datos que se llame DAM2DB, ¿vale? 00:05:15
En Mongo no se crea esa base de datos hasta que no se mete el primer documento en la colección, ¿vale? 00:05:25
En la base de datos. 00:05:36
Entonces, aunque nosotros metamos aquí un nombre que no existe, no importa porque luego lo va a crear. Vale, entonces volvemos a Visual Studio Code y aquí lo vamos a dejar así. 00:05:37
Vale, esto nos haría la conexión con la base de datos, vale, bueno, si estuviéramos usando MongoDB Atlas o un servidor de MongoDB en otro equipo o cosas así, en vez de poner aquí localhost pondríamos el dominio, la IP, vale, 00:05:58
Y si metiéramos un usuario y una password, porque ahora mismo yo estoy creando una base de datos en Mongo, pero no le estoy metiendo un usuario y una password de acceso, ¿vale? Estoy accediendo yo desde el backend y eso, bueno, pues tampoco está bien del todo, ¿vale? Yo ahora lo voy a dejar así por comodidad. 00:06:23
Si sí que creara esa base de datos con un usuario y un password, pondríamos ahí el MongoDB, dos puntos, slash, slash, pondría user, el usuario y la password, ¿vale? 00:06:45
Y aquí le pasaría arroba y luego ya el localhost, el slash, ¿vale? 00:07:01
Entonces, bueno, voy a dejar esto comentado y así lo tenemos aquí para no olvidarnos de que se hace así, ¿vale? 00:07:10
Por ahora nosotros vamos a usar el mongoose.connect y vamos a meter el mongo.tb, dos puntos, slash, slash, localhost y ya hemos dicho dan2db, ¿vale? 00:07:19
bueno pues esto es mongoose.com 00:07:49
la herramienta connect vale para conectaros a la base de datos luego veremos en otro 00:08:00
vídeo que existe en mongoose.es 00:08:15
este vale que es para crear esos esquemas eso esas plantillas para los 00:08:22
datos vale para meter siempre las mismas documentos el mismo número de clave 00:08:28
valor en los documentos y con una serie de restricciones vale y vamos a trabajar 00:08:36
con el connect y con el exchange vale entonces por ahora voy con el connect vale entonces nosotros 00:08:40
aquí si yo ejecutara este o llamara este js bueno pues se haría la conexión a la base de datos vale 00:08:47
pero nosotros no estamos llamando a diferentes ficheros estamos llamando a app de app y vamos 00:08:58
llamando a index vale y configurando y diciendo que es lo que queríamos que usarán los diferentes 00:09:06
módulos vale entonces yo lo que quiero es desde index importar una variable que me arranque esa 00:09:14
conexión a la base de datos vale entonces para hacer eso lo que voy a hacer es crearme una una 00:09:26
constante una variable perdón que lo voy a llamar el connect debe que esto se suele llamar siempre 00:09:37
así vale entonces yo ahora tengo una variable que jota es en javascript siempre lo vais a poner con 00:09:46
el cons tengo una variable que se llama con el db y que le digo que en esta esta variable la voy a 00:09:54
usar para ejecutar el mongoose.connet y hacer la conexión con la base de datos. Si yo esto lo quiero 00:10:03
exportar e importarlo en index.js, entonces teníamos que poner aquí el export. Vale, os tenéis que 00:10:12
acordar de eso. Cada vez que exportamos, queremos exportar una variable para utilizarla en nuestro 00:10:22
desarrollo siempre con el export vale recordar que metíamos el default vale metíamos el default 00:10:30
vale en este caso no lo voy a meter 00:10:46
como hacíamos por ejemplo donde era en app no si aquí veis teníamos el sport de faul app 00:10:55
Vale, app lo creamos aquí, constante app es igual a express, bueno, aquí lo ponía de esta manera, vale, si en db no meto el default, que no es obligatorio, aunque todos los desarrolladores web lo van a poner, vale, eso me obliga a que si yo lo quiero importar en index.js, 00:11:05
aquí quiero importar el connect db vale esa variable lo tengo que meter entre llaves 00:11:32
connect aquí lo tengo vale y ya os dice ya os marca directamente en el fichero en el que está 00:11:43
esta variable pero os tenéis que acordar que si no meto el default en db entonces hay que 00:11:51
meter esas llaves, vale 00:12:01
vale, esto me lo ha puesto 00:12:04
porque antes lo he escrito mal 00:12:07
vale, ya está 00:12:09
vale 00:12:11
y tenemos entonces una variable 00:12:13
una conexión 00:12:15
bien 00:12:16
vale, ahora lo que quiero utilizar 00:12:19
son funciones flecha, vale 00:12:21
y quiero utilizar funciones flecha 00:12:23
porque en este tipo de 00:12:26
desarrollos es lo que más se utiliza porque además podemos controlar 00:12:29
por ejemplo como vamos a hacer aquí un try and catch por si hubiera algún tipo 00:12:36
de problema porque un problema que vosotros tenéis que 00:12:41
tener siempre en la cabeza y que a veces nos encontramos con ellos en las 00:12:46
defensas de los tfg es que hacéis una hacéis operaciones 00:12:52
que requieren que el desarrollo se pare hasta que se obtenga un resultado de esa operación, ¿vale? 00:12:59
Y eso no es correcto. Siempre operaciones que tenemos que esperar a obtener un resultado, pues hay que hacerlas de forma síncrona o con procesos o con hilos o con lo que sea, 00:13:09
pero nunca separa un desarrollo, el funcionamiento de una aplicación porque es que hay que hacer una determinada operación, ¿vale? 00:13:26
Entonces, cuando se estudian los procesos y vosotros que tenéis un módulo, este curso que lo estudiáis, veréis el porqué. 00:13:37
Entonces, en JS, en Javascript, ese tipo de funciones que se ejecutan en segundo plano se usan, se crean con dos parámetros, que uno es el await y otro es el async y tienen que ir los dos juntos, ¿vale? 00:13:44
Entonces, para usar esos dos parámetros necesito esas funciones flecha. Las funciones flecha o funciones anónimas también son muy cómodas cuando quieres pasar como parámetro de entrada a funciones, otras funciones, ¿vale? Entonces, ahí las funciones flecha ahora mismo se suelen utilizar bastante. 00:14:05
Voy a venir aquí abajo, ¿vale? Luego esto lo voy a borrar, pero para que entendáis un poco cómo es, yo tengo una función clásica, vamos a hacer funciones aritméticas, ¿vale? 00:14:26
Esto sería una función clásica, función sumar, esto aquí con sus llaves y le digo el return a más b, ¿vale? a más b, ¿vale? 00:14:43
Esta es una función clásica de toda la vida, una función que tiene un nombre, tiene unos parámetros de entrada y para devolver un resultado le hemos pasado el return, ¿vale? Puede tener más operaciones como siempre, bueno, ya las conocéis y no tiene ningún misterio. 00:15:03
Ahora bien, una función flecha lo que hace es asignar esta función a una variable. 00:15:20
Vale, entonces el paso fue crear esa variable, le poníamos un nombre, pues por ejemplo le podíamos poner, no sé, ya que estamos con las operaciones aritméticas, 00:15:34
pues le ponemos resta, constante resta, es igual a función, le pasábamos los dos parámetros, le pasaba esto, return, y le decía x menos, vale, entonces de este tipo de funciones clásicas de esta estructura pasamos a esta, vale, 00:15:52
Y ya podíamos asociar una función a una variable, en este caso resta, yo podía llamar a resta y podía utilizarla de esta manera, ¿vale? Esto empezó a evolucionar más, entonces le decía, bueno, yo lo que quiero es hacer una función flecha, vamos, quiero hacer una función flecha. 00:16:22
Yo lo que quiero es, está claro que si yo declaro una variable, este por ejemplo, este nombre de función aquí, si tiene un igual, tiene unos paréntesis, unos valores que están entrando, tiene un resultado, se puede simplificar un poco más, ¿vale? 00:16:43
Entonces aquí metíamos cons, ahora vamos a hacer por ejemplo la multiplicación, esto es igual a, bueno pues ya sé que es una función, entonces eso pues no me hacía falta, entonces pongo x e y, ¿vale? 00:17:02
Y, eh, podíamos decir, en vez de usar, bueno, pasábamos esta sintaxis, decía esto va a ser igual a, eh, x por pi, ¿vale? 00:17:19
Vale, y esto era una función flecha que tenía una variable que le pasamos unos parámetros, le ponemos el simbolito de la flecha, por eso es el nombre de la función flecha, y hacíamos las diferentes operaciones metiendo este return, que es el que me devuelve ese valor. 00:17:50
Entonces, esto todavía se podía ir simplificando mucho más, porque tú podías poner, por ejemplo, constante, pues ahora vamos con el cuadrado, que esto es igual a x flecha, y vamos a ponerlo todo, ahora lo simplifico, retun x por x. 00:18:15
vale entonces yo tenía esta esta función que ahora mismo es exactamente igual que la de arriba vale 00:18:47
pero dices bueno en este caso sólo le pasó un parámetro así que estos paréntesis me los puedo 00:18:57
cargar así que me los quito vale luego solo estoy haciendo una operación entonces con las llaves 00:19:04
también me permite quitarlas y además esta operación es además de ser la única que estoy 00:19:15
haciendo es la que devuelve un valor entonces ese reto también lo puedo quitar valiendo es una 00:19:22
operación flecha al final o anónima es esto vale entonces siguiendo un poco estos pasos voy a 00:19:29
borrar esto siguiendo un poco esos pasos es lo que quiero convertir o es lo que quiero hacer sobre 00:19:38
esta sobre esta línea sobre esta sentencia vale entonces tenemos el sport el cons con el db esto 00:19:47
es igual aquí pasaríamos un valor vale pondríamos los parámetros de entrada en 00:19:59
este caso no hay parámetros de entrada bueno pues le voy a poner paréntesis 00:20:13
paréntesis y pasaríamos 00:20:17
él la flecha vale 00:20:21
tendríamos esto y tendría así y esta sería mi función flecha 00:20:27
vale ahora os he dicho para 00:20:40
hacer que una función se ejecute en segundo plano tengo que jugar con el 00:20:45
la white y con el async vale entonces todas las función todas las operaciones que quiero que se 00:20:50
ejecuten en segundo plano le voy a meter aquí en la vuelta vale y me lo pone como si hubiera 00:20:57
un error entonces eso es porque tiene que ir siempre con el async entonces async aquí le 00:21:04
metemos el async vale y esto ya no nos va a funcionar bien y qué es lo que estamos diciendo 00:21:11
vale vas a importar desde index j s vas a importar esta esta variable esta variable lo que hace es 00:21:18
la conexión con la base de datos de mongo db la hace de una forma en segundo plano 00:21:36
asíncrona vale de tal forma que voy a poder ejecutar voy a poder seguir ejecutando mis 00:21:42
otras operaciones de mi desarrollo vale bueno que más tenemos que tener en cuenta como desarrollo 00:21:48
como desarrolladores estás hablando de una conexión a una base de datos cualquier operación 00:21:58
sobre una base de datos es sensible y siempre se puede producir algún error vale entonces como 00:22:05
buenos desarrolladores sabéis que esos errores hay que controlarlos entonces qué es lo que vamos a 00:22:15
utilizar el try y el catch entonces aquí lo que vamos a hacer es meter el try este le vamos a 00:22:23
meter con sus llaves y vamos a poner esto aquí con sus llaves 00:22:33
vale en el cat vamos a recoger el error el posible error que se pueda dar vale 00:22:52
entonces tenemos el cat tenemos 00:23:02
ahora ya ves bien, sí, wait, tenemos que si se produce un error, yo lo que quiero saber es qué error se ha producido, 00:23:08
entonces le vamos a meter un console.log que nos visualice por el terminal ese error, ¿vale? 00:23:22
Vale, y si se produce la conexión a la base de datos, pues le vamos a decirle también, 00:23:31
le voy a pasar un string al terminal diciéndole, oye, pues la conexión a la base de datos es ok, ¿vale? 00:23:40
Entonces ya lo tenemos, ya tendríamos lo que sería nuestra función flecha para la conexión a MongoDB, ¿vale? 00:23:59
Entonces la tenemos así, hemos comprobado el tema de los errores, bueno, en principio yo creo que ya estaría, me vengo a index, hemos importado con el db esta variable, ahora que aparece aquí como deshabilitada, hay que usarla, ¿vale? 00:24:08
y qué es lo que voy a meter aquí, connet db, vale, y, cuando, donde ponemos, porque al final es importante, donde metes ese connet db, lo metemos, antes o después de arrancar el express, 00:24:27
Vale, yo lo voy a poner antes, aunque en principio nos puede dar igual, yo lo pongo antes, ¿por qué? Porque lo que hemos hecho ha sido hacerlo asíncrono, así que mientras se está haciendo la conexión a la base de datos, lo que hace mi desarrollo es levantar el express, ¿vale? 00:24:57
Entonces me da un poco lo mismo. Entonces vamos a coger ahora y vamos a hacer pruebas de todo esto. Por supuesto, para hacer esa conexión tiene que estar, lo que os he dicho antes, activado Mongo, ¿vale? 00:25:21
Entonces, ¿qué es lo que voy a hacer ahora? Arrancar mi aplicación. Si yo la arranco, ponemos run npm run dep, ¿vale? Si yo pongo npm run dep, vale, me dice, servidor activado en el puerto 4000, o sea, el express lo ha lanzado y la conexión a la base de datos es ok, ¿vale? 00:25:32
Fijaros como está el index, he metido primero el CONETDB, aunque aquí me lo está diciendo después, ¿por qué? Justo porque la hemos hecho que se ejecute en segundo plano, la hemos hecho asínclona, ¿vale? 00:26:02
Si yo no hiciera eso, fijaros la diferencia, si yo cojo y en dbjs quito el await y le voy a quitar también el async, que no me haría falta pero se lo voy a quitar, ¿vale? 00:26:17
vale si hacemos esto y yo cojo y lo arrancó ahora ya tenéis una diferencia no ya hasta que no he 00:26:37
hecho la conexión con la base de datos no haga no ha lanzado el express vale entonces es importante 00:26:50
es muy importante que esto lo diseñe jce bien vale puede ser que no queráis lanzar el servidor hasta 00:26:58
que no esté la base de datos por lo que sea por seguridad por lo que sea vale 00:27:05
pero lo tenéis que pensar muy bien y en el caso del tfg defenderlo vale que no 00:27:09
se os olvide en este caso voy a volver a poner 00:27:17
vamos a volver a poner el async async y vamos a volver a poner el agua 00:27:26
vale, y tendríamos ya hecho todo, ¿qué más podríamos hacer?, ¿qué otra prueba podríamos hacer para ver que nos funciona todo bien?, vamos a parar el mongo, 00:27:40
vale, ahora en teoría no tenemos la base de datos, así que no se podría generar esa conexión, producir esa conexión, y nos tendría que visualizar algún tipo de error, 00:27:55
Vamos otra vez a lanzarlo 00:28:10
En este caso, acordaros que 00:28:12
Vamos a ver 00:28:16
En package.json 00:28:18
Que ya tenemos también la dependencia 00:28:20
De mongoose 00:28:22
Eh, tenía 00:28:23
Os hice otro script para ver lo de 00:28:26
Watch, vale, entonces vamos a arrancar 00:28:28
Ahora en vez de con dev, con dev2 00:28:31
Para, no estar siempre 00:28:32
Haciendo lo mismo, vale, entonces ahora pongo 00:28:34
Npm run dev2 00:28:36
Vale, eso lo ejecuto, como lo hemos hecho, hemos puesto el await y el async, intenta hacer la conexión a la base de datos que está cerrado, me dice que ha lanzado el express, el servidor en el puerto 4000, se queda intentando hacer esa conexión con la base de datos, está buscando, buscando, 00:28:38
y en un momento dado, cuando exceda el tiempo, nos saltará ahí cualquier error, ¿vale? 00:29:03
En este caso, ya lo está diciendo aquí, ¿vale? Es que nada, que nos tira para afuera, ¿vale? 00:29:13
En el momento en el que volvemos a activar Mongo, pues ahí ya tenemos, ¿vale? 00:29:22
La conexión a la base de datos es ok y ya tendríamos todo bien configurado. 00:29:40
Si nos venimos ahora y vemos nuestra base de datos en Mongo Express, 00:29:45
que esto tendremos que volver a levantar el servicio, ¿vale? Ya está. 00:29:58
Vemos que aunque hemos hecho la conexión con DAM2DB, aquí no se ha creado, ¿vale? 00:30:07
Es un poco lo que os decía antes, que hasta que no metemos un documento, hasta que no hacemos una colección, no se va a quedar registrada. 00:30:14
Eso lo haremos en el próximo vídeo. 00:30:26
Un saludo. Hasta luego. 00:30:28
Idioma/s:
es
Autor/es:
Mario S.
Subido por:
Mario S.
Licencia:
Dominio público
Visualizaciones:
107
Fecha:
9 de julio de 2024 - 11:15
Visibilidad:
Público
Centro:
IES VILLABLANCA
Duración:
00′ 04″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
69.42 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid