新手请教连接MSSQL数据库并返回数据问题:
// server.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(express.static('public'));
// mssql模块的简单使用
const sql = require('mssql');
// DB configuration
const dbConfig = {
user: 'sa',
password: 'sa123',
server: 'localhost',
database: 'test',
port: 1433,
pool: { //连接池的概念
max: 10,
min: 0,
idleTimeoutMillis: 3000,
},
options: {
encrypt: false,
trustServerCertificate: false, //信任服务器证书
},
};
var conn = new sql.ConnectionPool(dbConfig);
//console.log(conn);
var req = new sql.Request(conn);
app.post('/login', (req,res) => {
const { username, password } = req.body;
//获取页面输入数据
var us = req.body.username;
var pw =req.body.password;
sql.connect(conn).then(function() {
//字符串拼接形式查询数据库是否有数据
new sql.Request().query("select * from Users where Name = '" + us + "' and Password = '" + pw + "'" ,function (err,data) {
if (err) {
console.log(err);
}
//如果数据库有数据rowsAffected则返回1大于零
else if (data.rowsAffected>0) {
res.writeHead(200,{"Content-Type":"text/html;charset=utf8"});
res.end("登录成功");
}
else {
res.writeHead(200,{"Content-Type":"text/html;charset=utf8"});
res.end("用户名或者密码不正确");
}
})
})
})
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
运行后监听到页面传来的数据后报错
TypeError TypeError: The "config.server" property is required and must be of type string.
不知道错在哪里?
在 Node.js 中使用
mssql
模块连接 SQL Server 时出现TypeError: The "config.server" property is required and must be of type string
错误,主要原因是连接池配置方式不正确。以下是解决方案和优化建议:错误修复方案
直接传递配置对象给
sql.connect()
问题在于创建
ConnectionPool
实例后,又将其传递给sql.connect()
。应改为:使用连接池的正确写法
若需显式使用连接池,应调用其
connect()
方法:安全优化建议
参数化查询防止 SQL 注入
当前代码存在严重安全风险(字符串拼接查询):
连接池配置优化
根据实际负载调整参数(参考最佳实践):
完整修正代码
常见排查点
网络与端口检查
telnet localhost 1433
验证端口是否开放确保 SQL Server 启用了 混合身份验证模式(SQL + Windows)
在 Windows 防火墙中允许 1433 端口入站
驱动依赖
安装最新版
mssql
模块(支持 TLS 等新特性):连接池工作原理:连接池会缓存数据库连接,避免频繁创建/销毁开销。当请求到达时,直接从池中分配空闲连接;使用完毕后归还到池中,而非真正关闭。合理配置可提升性能 30% 以上。
通过以上修正,既可解决配置错误,又能提升安全性和性能。若仍存在问题,建议检查 SQL Server 错误日志(路径:
C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Log\ERRORLOG
)。