快速GET请求结果出错:" res.send不是函数"

时间:2017-12-30 17:00:59

标签: node.js rest api express postman

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

1 个答案:

答案 0 :(得分: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
        }
      })
    }
  })
}