javascript - 使用 Javascript 重用 Azure Functions 的数据库连接

标签 javascript mongodb mongoose azure-functions

我无法找到有关如何从用 Javascript 编写的 Azure 函数管理数据库连接(在我的例子中为 MongoDB)的明确信息。

下面的 Microsoft 文档表示,不要使用 C# 中的静态变量(使用 .NET Framework Data Provider for SQL Server)为函数的每次调用创建连接,并且池由客户端连接处理。它没有描述如何在 Javascript 中执行此操作。

https://learn.microsoft.com/en-us/azure/azure-functions/manage-connections

此处描述了创建全局变量以在调用之间保存数据库客户端的解决方案,但作者不确定这是正确的方法。

http://thecodebarbarian.com/getting-started-with-azure-functions-and-mongodb.html

有人在生产中使用过它或了解这是否是正确的方法?

最佳答案

是的,C#/SQL 在静态变量中存储单个 SqlConnection 实例与 JS/MongoDB 在全局变量中存储单个 Db 实例之间存在非常接近的等效性。 Azure Functions 中 JS/MongoDB 的基本模式是(假设您是最新的异步/等待 - 或者您可以根据链接的文章使用回调):

// 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 ..
};

这意味着您只能为每个主机实例实例化一个 Db 对象。请注意,这不是每个功能应用程序 - 如果您使用专用的应用程序服务计划,那么将有您在计划中指定的实例数量,如果您使用消费计划,那么它会有所不同取决于您的应用程序的繁忙程度。

关于javascript - 使用 Javascript 重用 Azure Functions 的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53422257/

相关文章:

mongodb - 反转 MongoDB 查询的结果/相反的 $and 操作

java - MongoDB 地理定位与 Spring MVC 结合使用

javascript - 如何在 Mongoose/MongoDB 中正确构建数据库?

node.js - Mongoose 和 connect-mongo

javascript - TypeError : stub expected to yield, 但没有通过单元测试返回的回调

javascript - 数学随机在数组中查找名称而不重复

javascript - 使用 css 或 javascript 根据用户操作更改 html 页面上的图标

node.js - 显示mongodb中字段值部分匹配的文档

javascript - 使用 javascript 验证 html 表语法的正确性

javascript - 如何发现和填充同位素 jquery 网格中元素之间的空白区域?