Sí, existe una equivalencia muy estrecha entre C#/SQL que almacena una única instancia de SqlConnection en una variable estática y JS/MongoDB que almacena una única instancia de base de datos en una variable global. El patrón básico para JS/MongoDB en Azure Functions es (suponiendo que esté actualizado para async/await; como alternativa, puede usar devoluciones de llamada según su artículo vinculado):
// getDb.js
let dbInstance;
module.exports = async function() {
if (!dbInstance) {
dbInstance = await MongoClient.connect(uri);
}
return dbInstance;
};
// function.js
const getDb = require('./getDb.js');
module.exports = async function(context, trigger) {
let db = await getDb();
// ... do stuff with db ..
};
Esto significará que solo creará una instancia de un objeto Db por instancia de host. Tenga en cuenta que esto no es uno por aplicación de función:si está usando un plan de servicio de aplicaciones dedicado, habrá la cantidad de instancias que especificó en el plan, y si está usando un plan de consumo, entonces variará dependiendo de cuán ocupada esté tu aplicación.