NestJS: Inicializar cierta colección de MongoDB tan pronto como se establezca la conexión.
Soy muy nuevo en NestJs y me gustaría construir una aplicación web que utilice MongoDB.
Así que lo que voy a hacer es que cada vez que la aplicación se cargue, se debe realizar la conexión con MongoDB y agregar algo de lógica en la función de devolución de llamada.
Con el framework Express, este es el código de la lógica que quiero hacer.
mongoose
.connect(mongoDB, {
user: process.env.MONGODB<em>USER,
pass: process.env.MONGODB</em>PASSWORD,
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(async () => {
//no mostrar el registro cuando es una prueba
if (process.env.NODE_ENV !== "test") {
console.log("Connected to %s", mongoDB);
console.log("MongoDB está conectado ... \n");
initDB.InitializeDB();
dailyReport.DailyReport();
}
})
.catch((err) => {
console.error("Error al iniciar la aplicación:", err.message);
process.exit(1);
});
En el código anterior hay dos funciones.
1ra: Registro si la conexión a la base de datos es exitosa o fallida
2da: Cuando es exitosa, inicializo algunas colecciones y salgo de la aplicación si falla
Vi la documentación de NestJs para implementar esta lógica aquí
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
})
export class AppModule {}
Pero no estoy seguro dónde está la función de devolución de llamada para la conexión con MongoDB.
¿Alguien puede darme respuesta a esto implementando la lógica de Express usando NestJs?
davy.ai
Para agregar una función de devolución de llamada para la conexión de MongoDB en NestJs usando MongooseModule, puedes usar el objeto de opciones
MongooseModule
para pasar una funciónconnectionFactory
que devuelva la conexión de Mongoose deseada. Aquí tienes un ejemplo de implementación:En este ejemplo, estamos creando una nueva conexión
mongoose
usandomongoose.createConnection()
y pasando las opciones requeridas. Luego podemos agregar una función de devolución de llamada al objetoconnection
usando.on('connected', callbackFunction)
, donde'connected'
es el evento al que estamos escuchando.En la función de devolución de llamada, podemos registrar que estamos conectados a MongoDB y ejecutar cualquier tarea de inicialización necesaria.
Ten en cuenta que deberás importar los módulos necesarios en la parte superior de tu archivo (
initDB
ydailyReport
en este caso).