发布于 2026-01-06 1 阅读
0

如何构建你的第一个 Serverless Logic 应用,第二部分 DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

如何构建你的第一个无服务器逻辑应用程序(第二部分)

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

欢迎在推特上关注我,我很乐意接受您对话题或改进方面的建议。/克里斯

本文是#ServerlessSeptember活动的一部分。在这个涵盖所有 Serverless 相关内容的合集中,您可以找到其他有用的文章、详细的教程和视频。整个九月,社区成员和云技术倡导者每天都会发布新文章——没错,每天都有!

访问https://docs.microsoft.com/azure/azure-functions了解更多关于 Microsoft Azure 如何启用您的无服务器函数的信息

简而言之,本文介绍了如何从Node.js连接到SQL Server数据库。

这是关于如何构建带有配套无服务器 API 的逻辑应用系列文章的第二部分。

  • 第一部分:搭建数据库框架并构建逻辑应用程序
  • 第二部分,我们在这里,我们将构建一个无服务器函数,该函数将连接到我们在第一部分中设置的 SQL Server 数据库。

资源

 概要

我们了解了什么是逻辑应用,它是一个包含许多强大集成功能的框架。在逻辑应用中,编码方式是将组件连接在一起,并决定何时触发、执行哪些操作以及为什么执行这些操作。

我们继续。我们有一个 SQL 数据库,所有来自逻辑应用的结果都将存储在其中。

 构建无服务器 API

好的,我们有了一个逻辑应用程序,太棒了:)!

现在我们需要构建一个无服务器 API,它可以从数据库读取数据,并将数据库数据以漂亮的 JSON 格式输出。

我们需要做以下几件事:

  1. 安装必备组件,这意味着我们需要核心工具和 VS Code 扩展。
  2. 搭建一个函数应用程序和一个函数
  3. 添加一些代码,从数据库读取数据并以 JSON 格式返回响应。

安装必备组件

我们首先需要 Azure Functions Core 工具。请查看Installing此链接中的标题。

Azure Functions 核心工具安装

这样应该就能为您提供 Linux、Windows 和 Mac 的操作说明了。

接下来我们需要 Azure Functions 扩展,它应该看起来像这样:

Scaffold 应用和函数

在此步骤中,选择View/Command Palette

选择当前目录,JavaScriptHttpTrigger你的函数起一个合适的名字,例如Mentions,然后选择AnonymousMentions现在,在目录下,你将有一个index.js文件,我们将对其进行修改。

添加代码

您需要向我们的Mentions目录添加一些额外的文件:

  • util.js文件可以帮助我们将 SQL Server 响应转换为 JSON 格式。
  • query.js文件将帮助我们连接到 SQL 服务器数据库。
  • config.js 文件,我们在这里定义一个配置对象,用于连接到我们的数据库。

首先,我们有query.js

// query.js

const {formatResponse} = require('./util');
var Request = require('tedious').Request;

function execute(query, connection) {
  return new Promise(resolve => {
    executeQuery(query,connection, (data) => {
      resolve(data);
    })
  }); 
}

var executeQuery = (query, connection, cb) => {
  request = new Request(query, (err, rowCount, rows) => {
    if (err) {
      console.log('error', err);
    } else {
      const formatted = formatResponse(rows);
      connection.close();
      cb(formatted);
    }
  });
  connection.execSql(request);
}

module.exports = execute;
Enter fullscreen mode Exit fullscreen mode

接下来,我们需要config.js设置所有数据库连接部分。

// config.js

// Create connection to database
const config = {
  authentication: {
    options: {
      userName: process.env.USER_NAME,
      password: process.env.PASSWORD 
    },
    type: 'default'
  },
  server: process.env.SERVER, 
  options: {
    database: process.env.DATABASE, 
    encrypt: true,
    rowCollectionOnRequestCompletion: true
  }
}

module.exports = config;
Enter fullscreen mode Exit fullscreen mode

以上并非我们如何读取process.env配置数据。下面我们来解释一下:

  • USER_NAME,这是你的数据库用户名。
  • 密码,那就是密码
  • 服务器,也就是服务器名称,您可以在数据库概览页面找到它。
  • 数据库,这就是你的数据库的名称。

您可以将此数据放在函数应用的应用程序设置中,也可以选择将其放在项目中名为 ` local.settings.jsonappSettings` 的文件中Values。部署时,您可以选择将此文件上传到 AppSettings。

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node"
  }
}
Enter fullscreen mode Exit fullscreen mode

第三,我们需要util.js将 SQL Server 的响应转换为类似这样的 JSON 格式:

[{
  "column": "value"
}]
Enter fullscreen mode Exit fullscreen mode

最后,我们的index.js文件内容如下:

// index.js

var Connection = require('tedious').Connection;
const execute = require('./query');
const config = require('./config');

async function get() {
  return new Promise(resolve => {
    var connection = new Connection(config);
    connection.on('connect', async function (err) {
        if (err) {
            console.log(err);
        } else {
            const res = await execute("SELECT * FROM Mentions ORDER BY TweetDate desc;", connection);
            resolve(res);
        }
    });
  });  
}

module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');
    const res = await get();
    context.res = {
        contentType: 'application/json',
        body: res
    }
};
Enter fullscreen mode Exit fullscreen mode

如果想在本地进行测试,需要在 SQL Server 的防火墙中打开相应的权限。

测试完成后请务必移除防火墙规则 :)

别忘了安装tedious连接 SQL 服务器所需的 NPM 库:

npm install tedious
Enter fullscreen mode Exit fullscreen mode

部署

部署过程非常简单,只需点击左侧工具栏中的 Azure 图标,然后滚动到“函数”区域即可。

之后,点击向上指的蓝色箭头,选择您的订阅以及它提示的所有其他选项,您的函数应该会在几分钟内部署到云端。

 实现用户界面

这是我们调用 API 的最后一步。我们只需指向一个实现此功能的 GitHub 代码库即可。最终结果如下所示:

你可以在这里找到前端代码。

仓库

 概括

我们学习了很多内容,重点是逻辑应用。正如你所见,一旦设置好数据库,就可以使用大量的连接器。在某些情况下,甚至不需要数据库,这完全取决于你要建模的场景。我们只是浅尝辄止地了解了逻辑应用的功能,但希望你能明白它们是什么,它们的基本概念以及它们的用途。我留下了足够的资源链接,供你进一步学习和实践。祝你编程愉快!

文章来源:https://dev.to/azure/how-you-can-build-your-first-logic-app-2o85