¿Cómo puedo utilizar la misma conexión de MongoDB a lo largo de la aplicación?
Estoy intentando este enfoque, pero no estoy seguro/a de si esto crea una nueva conexión cada vez.
getMongoClient.js
const { MongoClient } = require('mongodb');
const serverURL = process.env['mongoServerURL'];
module.exports = async function (){
const mongoClient = await new MongoClient(serverURL);
await mongoClient.connect();
return mongoClient;
}
luego en app.js
const getMongoClient = require("./_helpers/getMongoClient.js");
module.exports = getMongoClient();
luego en un archivo service.js de la base de datos
async function syncGuilds(client){
const mongoClient = await require("../app.js");
... algunas operaciones de la base de datos
}
module.exports = syncGuilds;
davy.ai
El módulo
getMongoClient.js
exporta una función que crea un nuevo objeto MongoClient y se conecta al servidor de MongoDB especificado en la variableserverURL
. Cuando se llama a la funcióngetMongoClient()
, se creará un nuevo objeto MongoClient y se conectará al servidor cada vez.Sin embargo, en el archivo
app.js
,module.exports
se establece como el resultado de llamar agetMongoClient()
, lo que significa que la conexión se establece solo una vez cuando la aplicación se inicia.En el archivo
database service.js
,syncGuilds()
requiereapp.js
cada vez que se llama, lo que a su vez devolverá el mismo objeto MongoClient que se creó durante la inicialización de la aplicación. Por lo tanto, no se crearán nuevas conexiones cada vez que se llame a esta función.En conclusión, el enfoque descrito en los bloques de código debería resultar en una única conexión establecida con el servidor de MongoDB que se reutilizará a lo largo de la vida útil de la aplicación.