Ejemplo simple de conexión a MongoDB con Mongoose

En este post te mostraré cómo crear un modelo de Mongoose para guardarlo en una base de datos de MongoDB. Además, te mostraré cómo hacer las cuatro operaciones fundamentales.

Será un ejemplo muy simple para comenzar a usar esta librería que permite definir modelos que más adelante vamos a insertar, actualizar, listar o eliminar de una base de datos de MongoDB.

Nota: aquí asumo que ya tienes un poco de conocimiento con node para ejecutar un archivo de JavaScript, iniciar el servidor, etcétera.

Instalando mongoose

En este caso mongoose es una librería de Node que puedes usar con cualquier tecnología que uses en ese servidor, por ejemplo, express.

Para instalarlo usa npm con:

npm install --save mongoose

Conexión con MongoDB

Recomiendo tener la conexión a la base de datos en un archivo separado, y en cada uno de nuestros modelos simplemente incluirla. Entonces la conexión queda así:

Fíjate en que me estoy conectando a la base de datos llamada videojuegos. Si tú usas usuario y contraseña para acceder, usa algo como lo siguiente:

En este caso especificamos el usuario y la contraseña en las opciones de conexión. También especificamos la fuente de autenticación que indica la base de datos en donde has creado tu usuario. Normalmente es admin.

Modelo

Ejemplo de modelo en Mongoose para conectar con MongoDB

Ahora que tenemos la conexión vamos a crear un modelo. Mi clase se llama Videojuego, pero también el nombre de la colección. Este último nombre es importante pues así se llamará la colección en la base de datos.

Después vemos las propiedades del modelo. El id será agregado automáticamente, así que no lo estoy especificando. Lo que sí estoy especificando es el nombre, precio y calificación.

En este caso el nombre es de tipo cadena y es requerido. Aquí estamos declarando tipos de datos y validaciones. Para el caso del precio y calificación también estamos indicando el valor mínimo con min.

Presta atención a cómo se está importando la conexión. En este caso tengo mi modelo dentro de la carpeta llamada modelos, y mi conexión es hermana de esa carpeta. Por eso es que la importo (línea 1) con ../conexion_mongo (la extensión js no es necesaria).

Si por ejemplo mi modelo y conexión residieran en la misma ubicación, la importaría con ./conexion_mongo. Básicamente es importar desde un directorio.

Ahora vamos a importar nuestro modelo desde cualquier lugar que vayamos a hacer operaciones con el mismo con:

De nuevo, en este caso es porque estoy dentro de un directorio que no es hermano de modelos, por eso es que uso ../. En caso de que tu modelo esté en otra ubicación simplemente cámbiala como debe ser.

Una nota sobre async, await y promesas

En los ejemplos que te muestro usaré async y await porque he declarado mis funciones como asíncronas. En caso de que tú no lo entiendas o no hayas declarado funciones asíncronas, simplemente cambia el await:

Por un then:

Esto no tiene que ver con mongoose. Solo es la diferencia entre usar promesas o async y await en JavaScript. Si me preguntas, yo prefiero lo del primer ejemplo.

CRUD con Mongoose

Al fin llegamos al código. Vamos a ver las 4 operaciones.

Cuando quieres hacer un nuevo registro creas una nueva instancia de tu modelo e invocas al método save. En este caso estoy definiendo las propiedades manualmente, pero pueden venir de cualquier lugar.

Cuando quieres obtener todos los registros, invoca al método find:

Si quieres obtener un registro por id, invoca a findById:

En el caso de actualizar un registro por id puedes usar a findOneAndUpdate:

Fíjate en que el id en este caso está especificado como _id. Y finalmente para eliminar un registro a partir del ID puedes usar findOneAndDelete:

Con esto terminamos las 4 operaciones para interactuar con una base de datos de MongoDB usando Mongoose.

Muy pronto te traeré más ejemplos y proyectos sobre estas tecnologías, mientras tanto te dejo la documentación oficial y más ejemplos de código con JavaScript o MongoDB.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario