Node.js nodejs+;azure功能应用程序-处理数据库连接的最佳实践?

Node.js nodejs+;azure功能应用程序-处理数据库连接的最佳实践?,node.js,mongodb,azure,azure-functions,azure-cosmosdb,Node.js,Mongodb,Azure,Azure Functions,Azure Cosmosdb,如果这不是问这个问题的地方,请告诉我正确的论坛(提前道歉) 我主要想知道,在一个nodejs应用程序中,在azure函数应用程序中实例化一个全新的db连接,然后在每次函数应用程序退出时关闭它是否是一个坏主意。(感觉是个坏主意) 这是一种标准做法,还是有更好的方法在调用无服务器函数时保持连接的活动性?或者这无关紧要 所讨论的连接充其量是与cosmosdb实例对话的mongodb本机驱动程序连接或mongoose连接。每次创建新数据库连接都可能导致性能低下。您可以添加指向数据库客户端的全局指针以保留

如果这不是问这个问题的地方,请告诉我正确的论坛(提前道歉)

我主要想知道,在一个nodejs应用程序中,在azure函数应用程序中实例化一个全新的db连接,然后在每次函数应用程序退出时关闭它是否是一个坏主意。(感觉是个坏主意)

这是一种标准做法,还是有更好的方法在调用无服务器函数时保持连接的活动性?或者这无关紧要


所讨论的连接充其量是与cosmosdb实例对话的mongodb本机驱动程序连接或mongoose连接。

每次创建新数据库连接都可能导致性能低下。您可以添加指向数据库客户端的全局指针以保留连接。如下所示:

const mongodb=require('mongodb');
常量uri='mongodb+srv://XYZ/test';
让client=null;
module.exports=函数(上下文,请求){
log('Running');
让hasClient=client!=null;
if(客户端==null){
mongodb.MongoClient.connect(uri,函数(错误,\u客户端){
如果(错误){
log('连接失败');
context.res={status:500,body:res.stack}
返回context.done();
}
客户=_客户;
log('Connected');
查询();
});
}否则{
查询();
}
函数查询(){
client.db('test').collection('tests').find().toArray(函数(错误,文档){
如果(错误){
log('运行查询时出错');
context.res={status:500,body:res.stack}
返回context.done();
}
log('Success!');
context.res={
标题:{'Content-Type':'application/json'},
正文:'Document Length'+docs.Length+',连接重用'+hasClient
};
context.done();
});
}
};

我还没有机会尝试这一点,但通过阅读代码,我了解这一方法,因此会接受答案。