Express GET请求结果出错:“res.send不是函数”

问题描述 投票:0回答:1

我试图使用节点从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变量是不正确的范围还是我可能完全错误的方法?

node.js rest api express postman
1个回答
0
投票

正如@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
        }
      })
    }
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.