logo

midudev


Transcribed podcasts: 167
Time transcribed: 5d 15h 37m 28s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

En la clase de hoy vamos a ver la base de datos MongoDB, una base de datos que suele ser la elección más típica cuando se hace backend con JavaScript.
Obviamente no es la única base de datos que existe, pero se lleva muy bien con este tipo de backend.
MongoDB lo podéis utilizar en proyectos también que no sean con JavaScript, pero no sé por qué.
Supongo que es por el tipo de formato, cómo se guardan los datos que utiliza, que ahora lo veremos, que suele llamar más la atención a desarrolladores de JavaScript.
Entonces, esta es la página oficial de MongoDB. Como podéis ver, no solo es la base de datos más utilizada para este tipo de proyectos, sino que además es la que sería más humilde.
Porque ya dice aquí, la base de datos líder para aplicaciones modernas. Bueno, no sé si es líder, pero es verdad que tiene una muy buena tendencia.
Habla de que es una base de datos distribuida, que está basada en documentos y de uso general.
Aquí está lo importante, que sea distribuida, luego os lo explicaré, pero basada en documentos, esto sí que es muy interesante.
Porque al ser basada en documentos, se diferencia bastante en otras bases de datos, como pueden ser las que están basadas en SQL.
En este caso, se llaman bases de datos no SQL. MongoDB es no SQL.
¿Cuál es la diferencia? Que las bases de datos de SQL son relacionadas, tienen relaciones, están basadas en tablas, registros, columnas, esquemas.
Es totalmente distinto. Digamos que son como más fijas, más estáticas, es como que tienen unas reglas mucho más duras a la hora de introducir datos en ellos.
Y hay relaciones entre las diferentes tablas. Tú tienes una tabla usuario, que tiene una relación a lo mejor con otra tabla, y esas relaciones son las que no tenemos, por ejemplo, en MongoDB.
Las podemos simular, sin ningún problema, pero ya veremos que no se suelen ni siquiera utilizar, no suelen ser tan importantes.
¿Qué es lo que tiene MongoDB? Que lo hace basada en documentos y lo hace no SQL, porque no es relacional, está orientada a colecciones, y dentro de las colecciones tenemos estos documentos,
que veremos que estos documentos son parecidos a JSON, aunque no son JSON exactamente, pero veremos que son parecidos a JSON.
Tiene una sencillez, son bastante más rápidas normalmente, justamente por cómo guardan los datos, y su esquema es libre.
Esto quiere decir que los datos que guardamos en estos documentos no son tan rígidos, pero veremos que nosotros vamos a utilizar un framework llamado Moongous,
que nos va a obligar o a solucionar este problema, porque según como lo veas puede ser un problema, ¿no?
Si tú te pones a guardar datos en una base de datos que no tienen un esquema fijo, pues la puedes liar, ¿no?
Si donde va un string a veces guardas un número, o un campo lo llamas de una forma u otra, dependiendo de dónde guardas los datos, puede ser problemático, ¿no?
Tú lo que quieres normalmente es que la base de datos sea predecible.
Aquí tenemos este modelo documental del que habla, que es este que es una forma de documentos de tipo JSON, y es que es esto.
Esto es un documento, y podemos ver que es básicamente un JSON.
No es exactamente un JSON, aunque como nos comunicamos con la base de datos vamos a utilizar JSON,
pero luego cuando se guarda por dentro no es un JSON, es un visón, y esto no tiene nada que ver con el animalico,
es porque se guarda JSON con un formato binario, ¿vale?
Obviamente porque es bastante más rápido.
Pero lo interesante es que nosotros cuando nos comuniquemos con ella y cuando nos devuelve la información, va a ser con JSON.
JSON ricos, que no es que estén ricos de darle un bocado y ya está, sino que vamos a tener un montón de información que podemos añadir en este JSON.
Podemos poner no solo objetos, arrays, lo mismo que podemos tener en un JSON, pues podemos tener boleanos, números, todo tipo de formato de datos.
También potente lenguaje de consulta, se pueden hacer consulta de forma muy sencilla y ya puedes ver que la anotación es muy similar, como JavaScript, ¿no?
Estamos en esta base de datos, en la colección users, vamos a encontrar el que tenga el campo de la dirección .zip y con este 9404.
Ahora, address.zip en realidad es una propiedad zip dentro del documento que tenemos la propiedad address.
Y aquí lo podríamos buscar, no sé si aparece, pero ves que address es un objeto.
Así que es súper sencillo hacer búsquedas de propiedades que tenemos dentro de otras propiedades.
O sea que ahí es donde teníamos esto de potente.
Y bueno, la verdad es que al final sí que, ves, pone todo el poder de una base de datos relacional.
Porque al final, el que no sea relacional per se, no significa que tú no puedas relacionar diferentes colecciones, ¿vale?
Tú puedes tener colección de usuario con los tweets, por ejemplo, y los puedes relacionar.
Pero normalmente no es tan... no se suele hacer.
Lo que se suele hacer es más duplicar datos que puedas tener en estos documentos,
de forma que el acceder a estos datos sea mucho más rápido.
No te sale tan a cuenta que sea relacional, sino lo que se suele hacer, justamente, es duplicar y triplicar datos.
Y que sea como se actualiza, ¿vale?
Tú puedes hacer que esos datos que se repiten, los actualices cada vez que lo necesites.
En lugar de tener siempre relaciones.
Esto obviamente puede tener sus problemas, ¿no?
Pero a la hora de escalar es mucho mejor.
De hecho, MongoDB se dice que tiene un escalamiento horizontal.
Esto quiere decir que tú puedes poner más máquinas y entonces tu base de datos funcionará mejor.
En cambio, otro tipo de base de datos, especialmente las que están basadas en SQL,
aunque cada vez cuanto más moderna se van poniendo, pues también está copiando esta nueva forma de crecer,
suele ser lo que se llama vertical, ¿no?
Que lo que necesita realmente es aumentar la potencia de la máquina para que pueda tener más consultas y todo esto.
Entonces, esto es lo que vamos a ver hoy.
La base de datos líder para aplicaciones modernas.
No me han pagado, es que he leído el título.
Hay diferentes formas de que podamos empezar a trabajar con MongoDB.
Una de ellas podría ser instalarnos MongoDB en nuestra máquina, ver cómo el local funciona y tal.
Tiene MongoDB, y aquí es donde obviamente están el dinerito, ¿vale?
MongoDB tiene un servicio que es bastante interesante,
que lo que te permite es crear una base de datos automáticamente y totalmente gratis.
Tiene un pricing que está bastante bien y aquí es lo que vamos a hacer.
Yo he entrado ahí, pero a ver, os voy a poner la página web por si queréis entrar.
Yo he creado ya el clúster, el clúster, porque tarda un ratito.
Pero veis aquí que tiene el SyncIn.
Esto es un servicio que tienen que ser en MongoDB Atlas.
Entonces, podéis ver SyncIn, he entrado con mi cuenta de Google,
y tiene un free tier, lo que nos va a permitir crear clústers totalmente gratis, ¿vale?
Depende, aquí le tendrías que dar create new cluster,
aunque la primera vez que entras pues tienes como un tutorial y te explica.
Y al crear aquí, pues verás que hay algunos,
que algunas destinaciones que tiene este free tier.
Así que puedes decirle cuál es el proveedor del cloud.
En este caso vamos a utilizar Amazon.
Y aquí, pues depende de dónde vivas,
lo más interesante es que utilices el que tú veas.
Si en mi caso estoy en Europa, pues sería Irlanda.
Bueno, en mi caso sería más bien París.
París sería el que tengo más cerca, así que yo elegiría París.
Pero como no tiene free tier, pues seguramente pondría Frankfurt.
Aquí el que tenga free tier, porque de esta forma, pues no te cobra nada.
De hecho, verás que cuando me pongo Frankfurt, pues debería,
ahora porque ya he creado uno, pero esto no lo dejaría cero.
Esto va muy bien para desarrollar.
Además, a mí me gusta mucho desarrollar con esto,
porque además ya te está de alguna forma haciendo las buenas prácticas
que tienes que tener en cuenta si esto estuviese en producción.
Porque si lo tienes en local, al final o puedes hacer que la base de datos
no tenga contraseña o te olvidas un poco de la seguridad.
Esto de alguna forma ya nos va a obligar desde el principio a hacer buenas prácticas.
Aquí te crearías el clúster.
Puede tardar unos minutos.
Por eso yo ya he creado uno, pero sería darle a crear
y tardaría, hay veces que tardar 5, 10, depende de las máquinas que tengan
y cuánto tarden en levantarlas y tal.
Al final te quedaría este dashboard que ya tendrías un clúster.
Este clúster básicamente es un set de servidores
que ya están dispuestos a tener esta base de datos.
Ya la tiene instalada y tal.
Y tiene incluso configuradas las réplicas.
Esto es porque si falla una base de datos,
pues lo que hace es utilizar, hacer que el primario sea otro.
Es como que tiene diferentes máquinas,
las tiene replicada la información y dice, vale, pues si este se cae,
esta es la que ahora va a ser el primario y va a replicar luego la información.
De esta forma es lo que decíamos, que escala mucho mejor.
¿Qué es lo que deberíamos hacer ahora que estamos aquí?
Vale, pues deberíamos darle a connect, para conectar.
Aquí nos dicen diferentes formas para conectar nuestra aplicación.
Podría ser desde el MongoShell, que nosotros no vamos a utilizar el Shell,
pero puede ser conecta tu aplicación.
Esto puede ser interesante, aunque aquí habla más de la aplicación tuya, ¿no?
La aplicación de Node.
Lo interesante de esto, ves que aquí pone driver,
puedes ver que tienes drivers para todo.
O sea, si tú utilizas C, C++, no es solo de JavaScript con Node.js,
tienes un montón de lenguaje de programación que pueden tener drivers para utilizar MongoDB.
En este caso sería Node.js y le decimos que la última versión.
Es lo que ya viene por defecto.
Hay diferentes programas y aplicaciones que te permite justamente conectarte con Mongo.
No hace falta desde primeras, pues ya ponernos ahí con código.
Entonces, yo te voy a presentar uno, pero hay diferentes opciones.
A mí este me gusta, porque es el que conocí en su día.
Es una aplicación que nos permite conectarnos a una base de datos y de MongoDB.
Y lo único que tendríamos que hacer es crear.
Y lo interesante aquí, en lugar de ponerte aquí a configurarlo todo,
lo que puedes hacer, esto lo suelen tener casi todos, ¿vale?
Es utilizar este MongoDB.
Y aquí pondríamos en el fromsrv, pues podrías poner aquí esta URL.
La podríamos poner aquí.
Aquí deberías poner el password que hemos configurado.
En este caso, pues no, la verdad que no recuerdo cuál es el password.
Lo tendré que sacar después o volverlo a crear.
Voy a poner un 2.3, pero ahí pondrías el password.
Le darías aquí a fromsrv, que al final esta es como la URL de conexión para esta base de datos.
Aquí ves que te crea aquí my first database.
Esto es como de ejemplo.
Aquí puedes poner el nombre de tu primera base de datos, que sea el que tú quieras.
Vamos a poner, por ejemplo, que sea miduDB.
Le daríamos a este botón y ahora ya recupera toda la configuración.
Esto es súper importante, porque si no, si la vas a intentar configurar a mano,
no te va a funcionar, te va a dar un montón de problemas.
Porque ves que tienes diferentes clusters con el puerto 27017, el nombre que le ha puesto por aquí,
el tipo de autentificación.
Aquí ya nos ha puesto el password, pero ya te digo yo que este no es el password correcto.
Básicamente lo ha hecho todo por nosotros, ¿ok?
Nos ha hecho cuál es la base de datos por defecto.
Esta es la forma correcta de configurar este tipo de conexiones.
Así que ya lo sabes, ¿vale?
Lo haces así, cambia el password y ya lo tendrías.
Yo ya lo tengo aquí conectado, la nueva conexión que he hecho antes,
para ver si funcionaba más que nada.
Le voy a dar a conectar, a ver si todo sigue funcionando correctamente.
Lo tenemos.
Parece que no ha pasado nada.
La verdad es que el Robo 3T igual no es la mejor aplicación ya,
pero lo bueno que tiene el Robo 3T...
He decidido esta porque está para Windows, Mac y Linux.
Y entonces de esta forma, pues veáis de donde me veáis,
pues vais a poder un poco seguir cómo funciona y tal.
Pero si en vuestro sistema operativo hay otra aplicación de Mongo que os guste más,
la podéis utilizar sin ningún problema.
Tenéis Compas, sin ir más lejos, tenéis MongoDB GUI también...
Hay diferentes alternativas.
Si os gusta más otra, al final es muy similar.
Lo único que vais a hacer es que vais a ver la información un poco distinta y ya está.
Ya os digo, Robo 3T no es que haya envejecido súper bien, ¿vale?
Pero al final lo importante es que más o menos ha envejecido bien.
Le daríais a este botón, al verde, veis que pone Download Robo 3T y Studio 3T.
El Studio 3T es como la versión chula, ¿vale?
Que es la de pago.
Entonces cuando descarguéis esto, vosotros os quedáis con la de Robo 3T,
porque la de Studio es la de pago y tienes un free trial de 30 días, pero ni caso, ¿vale?
Vosotros a la de Robo 3T.
Esto si queréis utilizar esta, ¿eh?
A mí me gusta porque es bastante rápida, es ligera, es...
Pero bueno, la que queráis, ¿vale?
Esta es la que voy a utilizar yo, pero es muy similar cualquiera que utilicéis.
Entonces, esto sería así.
Aquí tenemos nuestra conexión.
No sé si lo puedo hacer un poquito más grande.
Me parece que no.
Veis que tengo aquí las tres máquinas, que sean las tres réplicas,
y ya me dice cuál es el primario y cuál es el slave.
No se ve casi, pero veis que pone S, P y S, ¿no?
Pues la P es porque este es el primario.
Este, digamos, que es el importante ahora mismo.
Pero si este se cae, lo que haría es decir,
vale, voy a ver cuál de los dos se va a quedar con la información ahora,
mientras el otro pues sigue funcionando y eso.
Vamos a conectarnos al primario, le doy doble clic y ya me aparece esto.
Entonces, una vez que tenemos esto,
ahora ya podemos empezar a hacer, pues, diferentes...
Podemos ponerle comandos.
Esto es muy parecido si lo hiciéramos en el Shell, ¿eh?
Por ejemplo, podría decirle show database, creo que era así.
Le he dado a comando enter y entonces me ha aparecido así, ¿vale?
Mira, ah, mira, puedo sacar esto y así todo eso será mejor, ¿no?
Mira, así dejo esto aquí y esto lo pongo aquí
y así vamos a ver todos los...
Lo puedo hacer más grande y ahora no vamos a tener ningún problema.
Vale, estas serían las bases de datos que tenemos.
Pero claro, no quiero utilizar ni admin ni local.
Entonces, lo que deberíamos decirle es que quiero utilizar, pues, la miduDB.
Así, así es como se crea una base de datos dentro de MongoDB.
Vamos a decirle, quiero utilizar esta base de datos, ¿vale?
Comando enter y ya me dice, vale, hemos cambiado a esta base de datos, miduDB.
No sé si la crea ya, vamos a dar refresh.
No, todavía no, porque tendríamos que poner, por ejemplo, crear alguna colección, ¿no?
Create collection.
Le decimos, vale, la base de datos en la que estamos, DB punto.
Esto siempre es así, DB punto, ¿vale?
Y aquí tenemos ya un montón de métodos que podríamos ejecutar, un montón.
Ahora mismo el más importante sería el de crear la colección.
Así que podríamos poner una colección que sea de posts.
Hay una regla en la que a la hora de crear colecciones se haga en plural, ¿vale?
Luego lo veremos que esto es importante para una decisión que tomaremos, ¿vale?
Pero esto, que lo sepáis, que no se suele poner posts, se suele utilizar en la forma plural.
Creamos la colección y ahora ya podemos ver que aquí me ha devuelto alguna cosa más.
A ver si esto sí que tampoco lo puedo hacer de grande, ¿vale?
Pero me ha dicho, esto es la respuesta de mi comando.
Me ha dicho que ha ido bien y cuándo se hizo la operación.
Y, bueno, creo que aquí además te dice si ha habido algún momento en que el clúster ya lo ha dicho que ha ido todo bien.
Y tendríamos que esto podría tardar un pelín en que se replicase en los otros servidores que tenemos, porque tenemos tres.
Esto no es importante para nosotros ahora mismo, porque va a ser totalmente transparente.
Y suele ser bastante rápido, no nos vamos a dar cuenta.
Entonces, ahora que tenemos nuestra colección, lo que podríamos hacer es, pues, podríamos acceder a ella.
Ahora sí que le doy aquí a refresh, ahora sí que debería aparecer.
¿Veis? Mira, tengo la base de datos y si la miro, tengo las colecciones y tengo la colección posts, que ahora mismo está vacía.
De hecho, puedo hacer un find, que es lo más típico.
Le doy a comando enter y ahora me dice, pues, que no tengo records y tal.
Lo más fácil para ver cómo esto funciona, podríamos hacer un insert.
Y aquí, como os he dicho, pues, sería como un objeto JSON, ¿no?
Pues, podemos decirle la id, que sea 2.
Y aquí ya vamos a ver cosas interesantes.
El nombre, que sea pedazo de foto midu.
Luego podríamos poner lo que son, obviamente, strings.
No hay ningún tipo de problema.
Podríamos poner aquí likes.
Y aquí ahora sí que podríamos ver algo más interesante.
Podríamos tener un array y dentro del array podríamos tener, pues, un objeto.
Pongamos que estos son usuarios.
Tenemos Jellowin y tenemos también a Camila, que nos han dado likes.
Entonces, pongamos que eso nos ha dado like cada una y ya está.
Esto es un ejemplo para que veáis que puedo guardar un array.
Y el usuario de la foto, que sería, pues, yo mismo, arroba midu.def.
Vamos a ver si esto funciona.
Le doy al enter y ahora, pues, podemos ver que sí que ha guardado un record, ¿vale?
Se llama el record en 91 milisegundos.
Perfecto.
Ahora que ya tenemos esto, lo voy a cortar.
Y ahora, pues, ahora vamos a hacer el find a ver si encuentra algo.
¿Veis?
Ahora sí que tengo aquí, ahora sí que tengo mi objeto.
Fijaos en una cosa.
Esto es súper importante.
Yo había creado esto.
¿Y ves que yo había puesto una ID a la hora de crear en la base de datos?
Vale.
Esto es innecesario.
Porque si te fijas, ya nos ha creado aquí una ID.
Y nos ha creado una ID con algo que se llama Object ID.
Esto, que es un objeto bastante interesante, es una ID única que crea MongoDB para cada documento que tú creas en una colección.
Este Object ID, no voy a entrar en muchos detalles, pero el tema es que es aleatoria una parte y otra parte tiene la información de en qué momento se ha creado la colección.
O sea, que este Object ID, que además tiene un formato hasheado específico en donde se sabe cada parte lo que es, la parte que es aleatoria, la parte que es timestamp y todo esto, pues, nos va a permitir un montón de cosas.
Como la primera, olvidarnos de utilizar la ID, porque además, fíjate, yo había puesto dos y me lo ha guardado como si fuese un float, bueno, un double, básicamente como si fuese un decimal, lo cual no está bien.
Pero en cambio, todo lo demás sí que ha ido bien, ¿no?
No ha dicho esto es un string, esto es un string, esto es un array y fijaos aquí este array, pues, bueno, los números hay que tener cuidadito porque, ¿veis?
Te lo pueden guardar como floats y no es lo que esperamos.
Vale.
Ahora sí podemos hacer el find y esto funciona sin ningún tipo de problema y tal.
Lo mejor, vale, pues, sería en el find, pues, vamos a buscar todas las que sean de Midudev.
Vamos a buscar todas las fotos que sean del usuario en Midudev.
Para hacer eso, tendríamos que poner aquí el objeto este y ya está.
Voy a ejecutar, me ha encontrado uno.
Obviamente, ahora me va a encontrar justamente el único que tengo.
Así que voy a poner otra cosa aquí.
Ahora que ya sé esto, voy a quitar lo de la ID.
Y aquí con esto nos vamos a dar cuenta de otra cosa.
Puedo dar un pedazo de foto de Yellowwing, ¿vale?
Que Yellowwing, pues, tiene un like de Camila y otro de Sergiedo y otro de Ari.
Vamos a poner esto, likes, en lugar de ponerlo así, para que te fijes en un problema que, a ver, no es un problema, es una feature.
Pero puede ser problemática si no se hace correctamente, ¿vale?
Vamos a hacer que esto no sea un objeto, si es que es un array de strings.
El usuario, hemos dicho que ahora es Yellowwing y entonces esto ya, voy a quitar esto por aquí.
Vamos a insertar esta, ¿vale?
Le voy a hacer comando enter.
Se ha insertado uno.
Ahora vamos a ver otro problema.
Voy a insertarlo otra vez.
O sea, no hay ningún problema.
O sea, esto se puede insertar tantas veces como queramos.
Le puedo ir dando y se va a insertar sin importarle, ¿no?
Estaba insertando todo el rato el mismo.
Vamos a buscar ahora los que sean de Yellowwing.
Vamos a ponerlo aquí, vamos a cortar este.
Y me debería encontrar, uy, ¿qué he hecho?
No es name, es user.
Perdón.
Vale.
Ahora, así, nos devuelve dos.
Si quito esto de Yellowwing y le digo, no, no, me encuentra veloz todos.
Pues sí que tengo los tres, ¿no?
Perfecto.
Ahora, hay un problema con esto.
Fíjate que los documentos que tenemos, hay algunos que tienen cinco campos y otros que tienen seis.
Bueno, esto puede ser relativamente normal porque hay algunos que puede haber campos que sean opcionales.
No es muy normal, pero bueno, puede ocurrir, puede ocurrir.
El problema es que el primero que hemos añadido, pues tiene un formato, su documento, ¿no?
Donde tenemos los likes, que era un objeto y todo esto.
Pero luego, en el de Yellowwing, lo que hemos hecho es que sea un array de strings.
Un array de strings.
Aquí tenemos un problema, ¿no?
Que aquí es donde estamos viendo justamente que no es una base de datos donde guarde un esquema.
Ya no, es que ni siquiera le hemos dicho el esquema de cómo sería en SQL.
Que le diríamos, oye, no, este campo es un string, este campo es tal, este campo es un entero de 32 bits, esto es tal, ¿vale?
O sea, no le hemos dicho nada del esquema.
Pero lo que es peor es que ni siquiera lo ha inferido.
Ni siquiera dice, no, no, vale, ya me has creado un documento así.
A partir de ahora voy a seguir este esquema.
No, no, no.
O sea, tú puedes añadir ahora, podemos empezar a añadir aquí lo que nos dé la gana.
Lo cual, pues es peligroso, ¿no?
Ahora de repente hago esto y pues también se lo come con patatas.
Ahora imagínate que en un sitio ponemos que en lugar de antes haber puesto user, pues imagínate que me equivoco y ahora digo que es con name.
Y ni siquiera le estoy dando los requeridos.
Y al final nos está añadiendo aquí, pues nos está haciendo un locurón.
Este es uno de los grandes secretos por los que es tan rápido.
La forma en la que está guardando realmente la información y los checks que hace y deja de hacer.
Pero claro, un gran poder conlleva una gran responsabilidad.
Y la responsabilidad obviamente va a ser, por un lado, el hacer que evitemos crear documentos con esquemas distintos.
Aunque tengo que decirte que históricamente esta flexibilidad es lo que ha llamado mucho la atención a muchas startups.
¿Por qué?
Porque a muchas startups lo que le ha permitido es empezar con unos esquemas y luego ser flexible a la hora de tener diferentes versiones de la base de datos.
Incluso o migrarla de un esquema a otro.
Esto son casos muy interesantes en los que, por ejemplo, yo donde trabajaba teníamos como uno con un esquema antiguo en el que tenía información de una forma y luego quisimos migrar a otro.
Pero teníamos tantos millones y millones y millones y millones de registros que lo que teníamos al final era como dos versiones en las que, bueno, si ese campo no estaba, pues lo usábamos de una forma y sino de otra.
Al final lo que nos está dando es mucha flexibilidad, pero bueno, puede ser problemático.
Por poner otro ejemplo más, un caso muy típico y con el que deberías tener cuidado es a la hora de actualizar documentos o colecciones.
Por ejemplo, con el update lo primero que vamos a decir es que quiere, vamos a decir los documentos que queremos encontrar.
Vamos a decirle que el mío, el de Midudev, que había dicho que teníamos una foto, el de Midudev.
Vamos a ver si aquí, Midudev. Quiero actualizar los documentos que tengan el campo de usuario de Midudev.
Y ahora, claro, sin mirar la documentación, que es lo que decía antes, de sí, sí, no, sin mirar la documentación.
Bueno, ahora podríamos decirle los campos nuevos, pero vas a ver ahora cuál es el problema.
Si yo ahora le digo, vale, donde ponía que el usuario era Midudev, que básicamente es el primero, este name, que era el nombre de la foto, vamos a poner que el name ahora es otra foto.
Y le vamos a dar a comando enter, vale. Ay, no me lo he encontrado, espérate. A ver qué he hecho. Fotos, fine. A ver, que no me he encontrado este.
Ah, sí, sí que me lo he encontrado, sí que me lo he actualizado. De hecho, fíjate lo que ha hecho. Me la ha roto, me ha roto el documento, me la ha roto.
Y es que en el update, por ejemplo, hay que tener cuidado de que no tienes que actualizarlo así. Así lo que estás haciendo es machacarlo, ¿vale?
Esto no funciona como muchas cosas que hacen magia que dices, ah, no, sí, pues este es tu nuevo objeto y lo que te hago es un, no sé, como una fusión.
No, esto no funciona así. Hay que utilizar un operador especial que se llama set, que lo que hace es justamente la magia que estábamos comentando.
Por eso digo que eso de no mirar documentación te puede llevar más de una sorpresa.
De esta forma, si hicieses esto, aquí sí que guardaría la parte del objeto anterior y diría, vale, solo voy a actualizar este campo de aquí.
Eso es un poco para que te hagas un poco la idea, ¿vale?
Hasta aquí, esto sería un ejemplo, luego pues podríamos eliminar la colección, borrar algunos documentos, pero bueno, como es una cosa que vamos a hacer con la API, pues ya lo dejamos hasta aquí.
Un poco la presentación de MongoDB para que sepas por dónde van los tiros, ¿ok?
Así que voy a cerrar esto, lo vamos a quitar aquí, vamos a quitar el robo.
Aquí hay en un sitio, voy a ver dónde sería, database access.
Es posible que al principio aparezca un tutorial y te diga, tienes que crear un usuario para acceder a la base de datos, ¿vale?
Yo ya lo había creado porque he tenido que hacer el tutorial.
Pero aquí en database access, aquí, ¿ves? Yo ya tengo un usuario que me dice que, bueno, puedo acceder a todos los recursos y que además soy el admin.
Podrías crear un nuevo usuario que también fuese admin y le puedes decir cómo es que tiene que acceder, si es por certificado, con password.
Hazlo por password porque te va a ser más sencillo.
Además, unas cosas que puedes hacer es restringir el acceso de estos usuarios, lo puedes hacer por IP, lo puedes hacer de diferentes formas.
Entonces, por ahora, lo que deberías hacer es no restringirlo.
Si lo restringes por IP, di que se restringe por todas las IP, o sea, que todas las IPs puedan acceder.
¿Por qué? Porque es muy difícil que tú sepas el servicio de Roku qué IP está usando.
Por lo tanto, cuando crees el usuario, lo que deberías decirle es, vale, créamelo con todos, que tenga acceso a todas las IPs.
No sé aquí si se podría, sí, red and write, no sé qué. Sería aquí, network access. Vale, aquí.
Si te pregunta en algún momento qué IP se tiene que restringir, ¿vale?
Tú le dices, le puedes decir la tuya propia, pero esto sería más para local.
Pero si hay alguna, en algún momento que te diga para todas, pues le das a todas.
Si ya es demasiado tarde, que sepas que todas las IPs serían 0.0.0.0 barra 0, ¿vale?
Y con esto tendría acceso todas, todas las IPs.
Entonces, voy a ver si soy capaz de recuperar mi password, que efectivamente, que ya no lo tenía por aquí.
Ajá, vale, voy a actualizar el password.
Una cosa importante, cuando utilicéis este tipo de servicios, que sepáis que tiene una latencia, ¿vale?
O sea, que puede tardar un rato cuando tú... Ahora, por ejemplo, he cambiado el password, ¿vale?
A ver si lo puedo volver. Vale, ya está.
Pero veis que aparece aquí. Estamos deployando tus cambios.
La acción actual es configurando MongoDB.
Hay veces que esto puede tardar un minuto, dos minutos.
Así que es importante que tengas paciencia.
No que intentes utilizarlo nada más lo hagas, porque te puedes encontrar con problemas, ¿vale?
Solo para que lo sepas, porque más de una vez me ha pasado a mí que he intentado hacer esto
y me he encontrado con alguna sorpresa de, oye, ¿por qué esto no va?
Y te puede estar un buen rato.
Ya tenemos la base de datos, el acceso a la base de datos.
Ya tenemos configurado ahora mismo cuál va a ser el acceso al clúster.
De nuevo, importante, tienes que hacer que cualquier IP tenga acceso.
Al final, hay otras formas de hacer que tengamos seguridad en nuestra base de datos.
Pero es cierto que si tú tienes tu propio servidor y tienes clarísimo cuál es la IP,
hombre, puede ser gratis hacer esto, ¿vale?
Y lo puedes hacer.
Podrías tener un clúster que fuese para desarrollo, para producción,
que sí que puedas atacar desde cualquier URL para hacer los desarrollos en local.
Pero el de producción, que tienes muy claro que tiene una IP y tal,
pues le añades aquí la IP y eso que te libras, ¿vale?
Vamos a Connect y aquí ya nos dice, conectar tu aplicación.
Aquí tenemos un montón de cosas.
Conectado nuestra aplicación.
Aquí tenemos nuestra URL y vamos a ir con esto.
Ahí existe un driver oficial de...