node.js - 从 NodeJS 中的 Azure Function 访问 SQL 数据库

标签 node.js azure azure-sql-database azure-functions

我正在尝试创建一个由http请求触发的Azure函数,然后从SQL数据库中选择数据,然后返回数据。

我尝试按照此处的示例设置一个简单连接到数据库的基本示例:https://msdn.microsoft.com/library/mt715784.aspx 它不是特定于 Azure Function 的,但我认为它应该运行:

var Connection = require('tedious').Connection;  
var config = {  
    userName: 'userName',  
    password: 'password',  
    server: 'databaseServer.database.windows.net',  
    options: {encrypt: true, database: 'AdventureWorks'}  
};  

module.exports = function(context, req, saasSql) {

    var connection = new Connection(config);  
    connection.on('connect', function(err) {  
        if(err) {
            context.log(err);
        } else {
            context.log("Connected");  

            context.res = {
                body: 'Connected'
            };
            context.done();
        }
    });  
};

但是当它运行时(在管理控制台中触发)。我收到一条日志消息,表明该函数已启动,然后日志中没有其他内容。底部的输出窗口显示 Status: 502 Bad Gateway 和以下消息: 已为函数应用启用身份验证。在运行该函数之前禁用身份验证。

我猜这是因为我没有调用 context.done() 因为此函数的身份验证已关闭。我似乎无法弄清楚如何从连接尝试中获取任何错误信息等,我也尝试绑定(bind)到错误事件,但没有任何结果被触发。

更新

该错误消息是 Azure Functions 代码中的错误,并且显示了不正确的错误。然而,上面的代码仍然没有运行(并且没有抛出错误)。当我创建本地 Node 服务器并以这种方式运行时,它运行得很好,因此在 Azure Functions 框架中运行似乎存在问题。有没有办法从 Azure 函数连接到 SQL 数据库?

最佳答案

错误消息“为函数应用启用了身份验证。运行该函数之前禁用身份验证。” 表示您已启用 Authentication / Authorization feature您的功能应用程序的。这将阻止门户调用您的 Http 函数,因为需要身份验证。请注意,此身份验证与您在功能门户中配置的功能级别身份验证不同。

因此,目前唯一可行的方法是按照错误消息所述执行操作 - 禁用 Function App 级别身份验证。我们的存储库中有一个跟踪项目来改进这一点 ( issue here )。

关于node.js - 从 NodeJS 中的 Azure Function 访问 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395081/

相关文章:

node.js - Sequelize 查询给出 TypeError : undefined is not a function

javascript - oboe.js - 选择特定 Node 而不是所有匹配的模式?

javascript - app.get 和 app.post 在 node.js 中获取值

azure - Azure Blob 存储类型帐户与 StorageV2 帐户有何不同?

sql - Azure LogicApp 无法从 SQL Server 获取 rowid

javascript - 在 Node js 中的 Socket.io 中为特定用户发出事件

performance - 通过应用程序预热配置 Azure 网站

c# - 如何从服务总线主题死信队列中读取C#?

azure - 我的 Azure 项目设置的数据传输费用是多少

SQL外部表列长度问题