无法让节点mssql正常工作

这是我现在使用mssql的方式,但是它有时会出错:

JavaScript的:

router.get('/academiejaren', (req, res) => { sql.connect(dbconfig, function (err) { var request = new sql.Request(); if (err) { console.log(err); return; } request.query("SELECT * FROM [Alg].[DefAJ];", function (err, recordset) { if (err) { console.log(err); return; } else { res.end(JSON.stringify(recordset)); } }); request.query(); }); }); 

错误:

 { ConnectionError: Connection is closed. at C:\Users\Milan\Documents\Octopus\Octopus 2.0\node_modules\mssql\lib\main.js:1569:17 at _combinedTickCallback (internal/process/next_tick.js:73:7) at process._tickCallback (internal/process/next_tick.js:104:9) name: 'ConnectionError', message: 'Connection is closed.', code: 'ECONNCLOSED' } (node:556) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ConnectionError: Connection is closed. (node:556) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 

我使用的版本是3.2.0,因为我无法得到最新的4.0.2版本的工作…任何帮助或一些很好的例子,因为我无法弄清楚文档…

预先感谢!

编辑

在一个小的testing项目上更新到4.0.2。 我得到它的工作。 将我的API更改为此更新。

 router.get('/academiejaren', (req, res) => { (async function () { try { let pool = await sql.connect(config) let result1 = await pool.request() .query('SELECT * FROM [Alg].[DefAJ];') res.send(JSON.stringify(result1.recordset)); } catch (err) { res.send("CAUGHT ERROR academiejaren"); } })() sql.on('error', err => { // ... error handler }) }); 

现在我还有一个小问题,我应该如何处理catch和sql.on()? 我应该如何处理错误?

 router.get('/academiejaren', (req, res) => { sql.connect(dbconfig, function (err) { var request = new sql.Request(); if (err) { console.log(err); return; } request.query("SELECT * FROM [Alg].[DefAJ];", function (err, recordset) { if (err) { console.log(err); return; } else { res.send(JSON.stringify(recordset)); } }); request.query(); }); }); 

你从字面上res.endend退出它,你想要res.send

我做的有点不同:

 router.get('/', function(req, res, next) { sql.connect(dbconfig).then(function() { // Query new sql.Request().query("Your query") .then(function(recordset) { //console.dir(recordset); res.setHeader('Content-Type', 'application/json'); res.send( recordset ); }).catch(function(err) { // ... query error checks }); }); }); 

现在在你的dbconfig中,确保你有这样的: mssql:// user:password @ server / db