Ja, der er en meget tæt ækvivalens mellem C#/SQL, der gemmer en enkelt SqlConnection-instans i en statisk variabel, og JS/MongoDB, der gemmer en enkelt Db-instans i en global variabel. Det grundlæggende mønster for JS/MongoDB i Azure Functions er (forudsat at du er opdateret til async/wait - alternativt kan du bruge tilbagekald i henhold til din linkede 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 ..
};
Dette vil betyde, at du kun instansierer ét Db-objekt pr. værtsforekomst. Bemærk, at dette ikke er én pr. funktionsapp - hvis du bruger en dedikeret app-serviceplan, vil der være antallet af tilfælde, du har angivet i planen, og hvis du bruger en forbrugsplan, vil det variere afhængigt af hvor travlt din app er.