Ja, det finns en mycket nära motsvarighet mellan att C#/SQL lagrar en enda SqlConnection-instans i en statisk variabel och JS/MongoDB som lagrar en enda Db-instans i en global variabel. Grundmönstret för JS/MongoDB i Azure Functions är (förutsatt att du är uppdaterad för async/await - alternativt kan du använda återuppringningar enligt din länkade artikel):
// 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 ..
};
Detta innebär att du bara instansierar ett Db-objekt per värdinstans. Observera att detta inte är en per funktionsapp – om du använder en dedikerad appserviceplan kommer det att finnas antalet instanser du har angett i planen, och om du använder en konsumtionsplan kommer det att variera beroende på hur upptagen din app är.