如何构建你的第一个无服务器逻辑应用程序(第二部分)
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
欢迎在推特上关注我,我很乐意接受您对话题或改进方面的建议。/克里斯
本文是#ServerlessSeptember活动的一部分。在这个涵盖所有 Serverless 相关内容的合集中,您可以找到其他有用的文章、详细的教程和视频。整个九月,社区成员和云技术倡导者每天都会发布新文章——没错,每天都有!
访问https://docs.microsoft.com/azure/azure-functions了解更多关于 Microsoft Azure 如何启用您的无服务器函数的信息。
简而言之,本文介绍了如何从Node.js连接到SQL Server数据库。
这是关于如何构建带有配套无服务器 API 的逻辑应用系列文章的第二部分。
- 第一部分:搭建数据库框架并构建逻辑应用程序
- 第二部分,我们在这里,我们将构建一个无服务器函数,该函数将连接到我们在第一部分中设置的 SQL Server 数据库。
资源
- 注册一个免费的 Azure 帐户。如果您想构建逻辑应用和 Azure 函数,您需要一个 Azure 帐户,它是免费的。
- Logic Apps 概述:这是一个很棒的文档页面,概述了 Logic Apps 的功能,并提供了一些教程链接。
- 逻辑应用学习:很棒的入门模块,涵盖了很多概念。
- 逻辑应用学习 II本模块将通过一个包含 Twitter、认知服务和 SQL Server 的真实示例带您了解相关内容。
- aka.ms/learn 上共有 5 个关于 Logic Apps 的模块,涵盖从“Hello World”到更高级的自定义场景。
- Logic Apps 中的连接器本文将深入探讨连接器,包括它们的定义和现有连接器。
- 创建自定义连接器关于如何创建自定义连接器的详细文档
- VS Code 中的 Azure 函数
概要
我们了解了什么是逻辑应用,它是一个包含许多强大集成功能的框架。在逻辑应用中,编码方式是将组件连接在一起,并决定何时触发、执行哪些操作以及为什么执行这些操作。
我们继续。我们有一个 SQL 数据库,所有来自逻辑应用的结果都将存储在其中。
构建无服务器 API
好的,我们有了一个逻辑应用程序,太棒了:)!
现在我们需要构建一个无服务器 API,它可以从数据库读取数据,并将数据库数据以漂亮的 JSON 格式输出。
我们需要做以下几件事:
- 安装必备组件,这意味着我们需要核心工具和 VS Code 扩展。
- 搭建一个函数应用程序和一个函数
- 添加一些代码,从数据库读取数据并以 JSON 格式返回响应。
安装必备组件
我们首先需要 Azure Functions Core 工具。请查看Installing此链接中的标题。
这样应该就能为您提供 Linux、Windows 和 Mac 的操作说明了。
接下来我们需要 Azure Functions 扩展,它应该看起来像这样:
Scaffold 应用和函数
在此步骤中,选择View/Command Palette。
选择当前目录,JavaScript给HttpTrigger你的函数起一个合适的名字,例如Mentions,然后选择Anonymous。Mentions现在,在目录下,你将有一个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;
接下来,我们需要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;
以上并非我们如何读取process.env配置数据。下面我们来解释一下:
- USER_NAME,这是你的数据库用户名。
- 密码,那就是密码
- 服务器,也就是服务器名称,您可以在数据库概览页面找到它。
- 数据库,这就是你的数据库的名称。
您可以将此数据放在函数应用的应用程序设置中,也可以选择将其放在项目中名为 ` local.settings.jsonappSettings` 的文件中Values。部署时,您可以选择将此文件上传到 AppSettings。
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "node"
}
}
第三,我们需要util.js将 SQL Server 的响应转换为类似这样的 JSON 格式:
[{
"column": "value"
}]
最后,我们的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
}
};
如果想在本地进行测试,需要在 SQL Server 的防火墙中打开相应的权限。
测试完成后请务必移除防火墙规则 :)
别忘了安装tedious连接 SQL 服务器所需的 NPM 库:
npm install tedious
部署
部署过程非常简单,只需点击左侧工具栏中的 Azure 图标,然后滚动到“函数”区域即可。
之后,点击向上指的蓝色箭头,选择您的订阅以及它提示的所有其他选项,您的函数应该会在几分钟内部署到云端。
实现用户界面
这是我们调用 API 的最后一步。我们只需指向一个实现此功能的 GitHub 代码库即可。最终结果如下所示:
你可以在这里找到前端代码。
概括
我们学习了很多内容,重点是逻辑应用。正如你所见,一旦设置好数据库,就可以使用大量的连接器。在某些情况下,甚至不需要数据库,这完全取决于你要建模的场景。我们只是浅尝辄止地了解了逻辑应用的功能,但希望你能明白它们是什么,它们的基本概念以及它们的用途。我留下了足够的资源链接,供你进一步学习和实践。祝你编程愉快!
文章来源:https://dev.to/azure/how-you-can-build-your-first-logic-app-2o85



