您好我正在尝试在节点js和sql server中的一个JS文件中使用两个选择。我无法弄清楚这个的语法。我需要一个select来从表中获取所有人,另一个选择来计算该表中的总人数。是否可以将这两个选项放在一个JS文件中。如果是这样,有人可以帮我解释语法吗?
这是我试过的代码,我收到错误 "无法在发送标题后设置标题"
var sql = require(" mssql"); var dbConfig = {
server: "XXXXX",
database: "XXXXX",
user: "XXXXX",
password: "XXXX",
port: 1433
}; exports.list = function(req,res){
sql.connect(dbConfig, function (err) {
if (err) console.log(err);
var request = new sql.Request();
request.query('select * from PERSON', function (err, recordset) {
if (err)
console.log(err)
else
console.log(recordset)
res.render('personinfo_itwx', { data: recordset });
});
request.query('select count(*) from PERSON', function (err, recordset) {
if (err)
console.log(err)
else
console.log(recordset1)
res.render('personinfo_itwx', { data: recordset1 });
});
});
};
答案 0 :(得分:0)
@Aditya我不确定这是最好的方法,虽然我只是提出两个不同的请求,以达到你所需要的。正如我在评论中提到的,最简单的方法是使用(例如)async库。这是你要求的例子。
警告:我没看过mysql文档
const async = require('async')
// {
async.series([
function(next)
{
new sql.Request()
.query('SELECT * from PERSON', next(err, resultList))
},
function(next)
{
new sql.Request()
.query('SELECT COUNT(*) from PERSON', next(err, count))
}
], (err, result) =>
{
/*
err: String
- if any of the shown above return an error - whole chain will be canceled.
result: Array
- if both requests will be succesfull - you'll end up with an array of results
---
Now you can render both results to your template at once
*/
})
// }
当然,如果您希望在获得错误或结果后进行操作 - 您总是可以将错误和结果推送到新功能,使用您的数据,然后返回回调。像这样:
function(next)
{
new sql.Request()
.query('SELECT * from PERSON', (err, resultList) =>
{
if (err)
{
return next(err, null)
}
/*
data manipulation
*/
return next(null, resultList)
})
},