sql-server - 使用 npm express 连接到本地 mssql 服务器进行反应
问题描述
您好我正在尝试使用 npm express 连接到本地 mssql 数据库以提取数据并显示在屏幕上。但是我收到连接错误。为什么会出现这种情况?我仔细检查了服务器名称,但没有成功。数据库名为 test,表名为 users。数据库已打开并已连接。已经连接的数据库甚至需要用户/密码吗?
这是我的 server.js 文件
const app = express();
app.get('/', function (req, res) {
var sql = require("mssql");
// config for your database
var config = {
user: 'sa',
password: 'mypassword',
server: 'WIN10-LAP-HJP\MSSQLSERVER1',
database: 'test'
};
// connect to your database
sql.connect(config, function (err) {
if (err) console.log(err);
// create Request object
var request = new sql.Request();
// query to the database and get the records
request.query('select * from users', function (err, recordset) {
if (err) console.log(err)
// send records as a response
res.send(recordset);
});
});
});
var server = app.listen(5000, function () {
console.log('Server is running..');
});
这是错误。
Server is running..
ConnectionError: Failed to connect to WIN10-LAP-HJPMSSQLSERVER1:1433 - getaddrinfo ENOTFOUND WIN10-LAP-HJPMSSQLSERVER1
at Connection.<anonymous> (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\tedious\connection-pool.js:68:17)
at Object.onceWrapper (events.js:300:26)
at Connection.emit (events.js:210:5)
at Connection.socketError (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connection.js:1258:12)
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connection.js:1084:21
at GetAddrInfoReqWrap.callback (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connector.js:152:16)
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:72:17) {
code: 'ESOCKET',
originalError: ConnectionError: Failed to connect to WIN10-LAP-HJPMSSQLSERVER1:1433 - getaddrinfo ENOTFOUND WIN10-LAP-HJPMSSQLSERVER1
at ConnectionError (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\errors.js:13:12)
at Connection.socketError (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connection.js:1258:56)
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connection.js:1084:21
at GetAddrInfoReqWrap.callback (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\tedious\lib\connector.js:152:16)
at GetAddrInfoReqWrap.onlookupall [as oncomplete] (dns.js:72:17) {
message: 'Failed to connect to WIN10-LAP-HJPMSSQLSERVER1:1433 - getaddrinfo ENOTFOUND WIN10-LAP-HJPMSSQLSERVER1',
code: 'ESOCKET'
},
name: 'ConnectionError'
}
ConnectionError: Connection is closed.
at Request._query (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\base\request.js:447:37)
at Request._query (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\tedious\request.js:346:11)
at Request.query (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\base\request.js:383:12)
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\server.js:26:15
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\base\connection-pool.js:241:7
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 'ECONNCLOSED',
name: 'ConnectionError'
}
at Request.query (C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\base\request.js:383:12)
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\server.js:26:15
at C:\Users\Henry Peters\Desktop\testing123\react_express_starter-master\node_modules\mssql\lib\base\connection-pool.js:241:7
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 'ECONNCLOSED',
name: 'ConnectionError'
}
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Server is running..
解决方案
试试这个(这对我有用):顺便说一句,服务器名称只是从 sql server 复制/粘贴。
const sql = require('mssql')
var express = require("express");
var app = express();
var config = {
server: "LAPTOP-2563A\\someName",
user: "sa",
password: "password",
database: "nameDb",
port: 1433,
options: {
encrypt: false
}
};
async function main(){
async function fetchData () {
try {
let pool = await sql.connect(config)
let result1 = await pool.request()
//.input('input_parameter', sql.Int, value)
.query(`select round(sum(montoGastado),2) as y,
Tipo_Gasto as label
from Gastos
where MontoGastado > 0
group by Tipo_Gasto`)
return result1
pool.close()
} catch (err) {
// ... error checks
}
}
let abc = await fetchData();
app.all("/",function(req,res){
res.render("homePage.ejs",{abc: abc})
console.log(abc2)
})
}
main()
app.listen(3000)
推荐阅读
- async-await - 如何在 .NET 4.0 Web 应用程序中安全地(从死锁中)调用异步方法?
- r - dplyr: cbind 基于时间戳的列
- ios - 放大 iOS 登录屏幕而不呈现控件
- python - Tflearn 网络总是对线性函数进行建模
- java - 将第一个数组中的偶数复制到另一个数组中
- java - 获取 JShell 错误:';' 预期用于基本的 HelloWorld.java 程序
- list - List passed to procedure converts into list of list inside the procedure
- python - Django Rest Framework 错误 404 详细信息“:”未找到。
- vue.js - 根据 db 值检查正确的单选按钮
- scala - 将非结构化博客解析为结构化格式