2017-12-30 26 views
0

노드를 사용하여 SQL Server DB에서 데이터를 가져 오려고합니다. 함수를 실행하여 연결하고 데이터를 얻을 수는 있지만 함수를 API 끝점으로 바꾸고 싶습니다.Express GET 요청 결과 오류 있음 : "res.send is not function"

오류에 따라 res 변수가 마지막 if 문으로 전달되지 않는 것으로 보이지만 문제가 보이지 않습니다.

우체부에서이 주소로 GET 메서드를 사용할 때 res.send is not a function 오류가 발생합니다.

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 변수가 부적절 범위 또는 내가 완전히 잘못된 접근이있을 수 있습니까?

+2

'request.query()'의 내부 'res'는 함수의 바깥 쪽을 음영 처리합니다. 하나의 이름을 바꾸면 괜찮을 것입니다. – Sirko

+0

코드 스 니펫을 보낼 수 있습니까? 나는 당신이 진술하고있는 것을 시도했지만 여전히 오류가 있다고 생각합니다. 8 번과 13 번 줄을 말하는거야? 귀하의 의견에 대한 이해를 반영하도록 질문을 편집했습니다. – KVNA

답변

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 
     } 
     }) 
    } 
    }) 
} 
관련 문제