我试图使用节点从SQL Server数据库获取数据。我可以通过运行函数建立连接并获取数据,但我想将函数转换为API端点。
根据错误,在我看来,res
变量没有传递到最后一个if语句,但我没有看到问题。
当我在Postman的这个地址上使用res.send is not a function
方法时,我得到一个GET
错误。
let mssqlQuery = function(query, res) {
sql.connect(dbConfig, function(err) {
if (err) {
console.log("Error while connecting database :- " + err)
res.send(err)
} else {
let request = new sql.Request();
request.query(query, function(err, res) {
if (err) {
console.log("Error while querying database :- " + err)
res.send(err)
} else {
res.send(res) // res.send is not a function
}
})
}
})
}
// GET API
app.get("/api/address", function(req, res) {
var query = "select * from address"
mssqlQuery(query, res)
})
res
变量是不正确的范围还是我可能完全错误的方法?
正如@Sirko建议的那样,res值被另一个变量遮蔽。更正后的代码:
let mssqlQuery = function(query, res) {
sql.connect(dbConfig, function(err) {
if (err) {
console.log("Error while connecting database :- " + err)
res.send(err)
} else {
let request = new sql.Request();
request.query(query, function(err, resp) { // Changed res to resp
if (err) {
console.log("Error while querying database :- " + err)
res.send(err)
} else {
res.send(resp) // res.send is not a function
}
})
}
})
}