2017-12-30 58 views
0

Ich versuche, Daten von einer SQL Server DB mit Knoten zu erhalten. Ich kann eine Verbindung herstellen und Daten abrufen, indem ich Funktionen ausführe, aber ich möchte die Funktionen in API-Endpunkte verwandeln.Express GET Request Ergebnisse in Fehler: "res.send ist keine Funktion"

Basierend auf dem Fehler scheint es mir, dass die res Variable nicht in die letzte if-Anweisung übergeben wird, aber ich sehe das Problem nicht.

Ich bekomme einen res.send is not a function Fehler bei der Verwendung einer GET Methode auf diese Adresse von Postman.

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) 
}) 

Ist die res Variable scoped unsachgemäß oder könnte ich habe den falschen Ansatz völlig?

+2

Die innere 'res' von' request.query() 'beschattet den äußeren der Funktion. ändere den Namen von einem und du solltest in Ordnung sein. – Sirko

+0

Können Sie ein Code-Snippet senden? Ich denke, ich habe versucht, was Sie sagen, aber immer noch einen Fehler gemacht. Beziehen Sie sich auf die Zeilen 8 und 13? Ich habe die Frage bearbeitet, um mein Verständnis Ihres Kommentars widerzuspiegeln. – KVNA

Antwort

0

Wie von @Sirko vorgeschlagen, wurde der res-Wert von einer anderen Variablen schattiert. Der korrigierte Code:

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 
     } 
     }) 
    } 
    }) 
} 
Verwandte Themen