在前端开发中,我们常常需要与数据库进行交互。而在 Node.js 中,msnodesql 和 mssql 是两个常用的模块来实现与 SQL Server 数据库的交互。但是,这两个模块使用起来繁琐、复杂,尤其在连接池方面表现不佳。而 node-red-contrib-mssql-pool 则是一个开箱即用、易于使用的连接池模块,本文将介绍其使用方法。
安装
我们首先需要在项目中安装这个模块,通过 NPM 安装:
npm install -g node-red-contrib-mssql-pool
使用
使用 node-red-contrib-mssql-pool 的过程类似于使用其他的 Node.js 模块。我们可以在 Node-RED 的“编辑器”中,通过拖拽“节点”来创建可视化的程序流程。而 node-red-contrib-mssql-pool 模块则提供了以下 3 个节点:
- mssql-pool:配置连接信息
- mssql-query:执行查询命令
- mssql-in:接收并处理查询结果
我们先来看一下如何使用 mssql-pool 配置连接信息。
配置连接信息
在 Node-RED 的“编辑器”中,拖拽 mssql-pool 节点到程序流程中,将鼠标放置在该节点上,点击弹出列表中的“编辑”按钮,即可设置连接信息,如下图所示:
参数说明:
- Server:要连接的 SQL Server 实例的名称或 IP 地址。
- Port:实例监听的端口号。如果未指定,则使用默认端口 1433。
- User Id:SQL Server 登录名。
- Password:SQL Server 登录密码。
- Domain:Active Directory 域名称。
- Database:要连接的数据库的名称。
- Connection Timeout:连接超时时间,以秒为单位。默认值为 10000。
- Pool Size:池的最大连接数量。默认值为 10。
执行查询命令
在 Node-RED 的“编辑器”中,拖拽 mssql-query 节点到程序流程中,并将其连接至 mssql-pool 节点。双击该节点,并设置查询语句,如下图所示:
在这个节点中,我们可以通过输入 SQL 查询语句来执行数据库查询。节点会自动将查询结果存储到 msg.payload 变量中,我们可以在接下来的节点中对其进行处理。
接收并处理查询结果
在 Node-RED 的“编辑器”中,拖拽 mssql-in 节点到程序流程中,并将其连接至 mssql-query 节点。该节点的作用是用来处理由 mssql-query 节点查询得到的结果。我们可以采用以下的方式对查询结果进行处理:
- 如果查询结果是一条记录,则 msg.payload 会是这条记录的 JSON 格式。
- 如果查询结果是多条记录,则 msg.payload 会是一个包含这些记录的数组,在数组中每个元素都是一条记录的 JSON 格式。
- 如果查询出错,则 msg.payload 为 undefined,msg.error 为错误信息。
一个简单的例子如下所示:
-- -------------------- ---- ------- -- ----- -- ------- -------- ------ -- -- - ----- -- ------- ------ ------ -- -- - ----- -- ------- ---------- ------ -- --
示例代码
下面是一个使用 node-red-contrib-mssql-pool 模块查询 SQL Server 的示例代码,它通过连接池实现了高效的数据库交互:
[{"id":"2cc7b735.0173bc","type":"mssql-pool","z":"e5d80.2cb70c64","mssql-cn":"5f5d5f91.89b834","name":"SQL Server","idleTimeoutMillis":"30000","max":"10"},{"id":"b4727e62.ed21b","type":"mssql-query","z":"e5d80.2cb70c64","mssql-cn":"5f5d5f91.89b834","query":"SELECT * FROM users WHERE id = ?","name":"Select User","params":"[\"1\"]","outField":"payload","x":740,"y":200,"wires":[["7d539335.eebafc"]]},{"id":"7d539335.eebafc","type":"mssql-in","z":"e5d80.2cb70c64","mssql-cn":"5f5d5f91.89b834","name":"Process Result","x":950,"y":200,"wires":[["1aa9e9ac.2cea34","d726ce06.464ee8"]]},{"id":"1aa9e9ac.2cea34","type":"debug","z":"e5d80.2cb70c64","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1160,"y":140,"wires":[]},{"id":"d726ce06.464ee8","type":"function","z":"e5d80.2cb70c64","name":"Process Data","func":"var data = msg.payload;\nvar user = {\n id: data[0].id,\n name: data[0].name,\n age: data[0].age\n};\n\nmsg.payload = user;\nreturn msg;","outputs":1,"noerr":0,"x":1130,"y":240,"wires":[["7445a97d.0001cc"]]},{"id":"7445a97d.0001cc","type":"debug","z":"e5d80.2cb70c64","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1320,"y":300,"wires":[]},{"id":"5f5d5f91.89b834","type":"mssql-cn","z":"","name":"SQL Server","server":"./MSSQLSERVER","user":"sa","password":"*****","domain":"localhost","db":"testdb","pool":{"max":"10","min":"1"}}]
以上就是 node-red-contrib-mssql-pool 模块的使用方法和示例代码,相信这篇文章对于从事前端开发的读者们会有一定的帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005515881e8991b448ce733