Не удается получить ответ от API, созданного с помощью Express.js и SQL Server - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь научиться создавать API с помощью Node и Express.js. Я нашел следующий шаг за шагом: нажмите здесь

И создал очень похожую версию, но с моими данными:

var express = require("express");
var bodyParser = require("body-parser");
var sql = require("mssql");
var app = express();

app.use(bodyParser.json());

app.use(function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content-Type, Accept, Authorization");
    next();
});

 var server = app.listen(process.env.PORT || 8080, function () {
    var port = server.address().port;
    console.log("App now running on port", port);
 });

 var dbConfig = {
     user:  "myUser",
     password: "myPass",
     server: "myServer",
     database: "MyDB"
 };

var  executeQuery = function(res, query){
     sql.connect(dbConfig, function (err) {
         if (err) {
                     console.log("Error al conectarse a la base :- " + err);
                     res.send(err);
                  }
                  else {
                         // create Request object
                         var request = new sql.Request();
                         // query to the database
                         request.query(query, function (err, res) {
                           if (err) {
                                      console.log("Error al correr query en la base :- " + err);
                                      res.send(err);
                                     }
                                     else {
                                       res.send(res);
                                            }
                               });
                       }
      });
}

//GET API
app.get("/api/ApiRequestData", function(req, res){
                var query = "select * from [RequestData]";
                executeQuery (res, query);
});

После создания документа server.js, выполненного с npm install и запуска с node server.js, я открыл почтальон, используя следующий URL: http://localhost:8080/api/ApiRequestData и получил сообщение об ошибке: «Не удалось получить ответ». В командной строке узла я получаю сообщение:

TypeError: res.send не является функцией в C: \ Users \ API \ server.js: 43: 44 в C: \ Users \ API \ node_modules \ mssql \ lib \ main.js: 1588: 20 в Request.userCallback (C: \ Users \ API \ node_modules \ mssql \ lib \ tedious.js: 853: 61) at Request.callback (C: \ Users \ API \ node_modules \ tedious \ lib \ request.js: 33: 27) в сообщении Connection.message (C: \ Users \ API \ node_modules \ tedious \ lib \ connection.js: 1179: 27) в Connection.dispatchEvent (C: \ Users \ API \ node_modules \ tedious \ lib \ connection.js: 519: 45) на MessageIO. (C: \ Users \ API \ node_modules \ утомительно \ Lib \ connection.js: 439: 23) на emitNone (events.js: 106: 13) на MessageIO.emit (events.js: 208: 7) на ReadablePacketStream. (C: \ Users \ API \ node_modules \ утомительный \ Lib \ Message-io.js: 92: 15)

Кто-то знает, почему показывает это сообщение?

Надеюсь, вы сможете мне помочь.

1 Ответ

0 голосов
/ 30 октября 2018

Вы отслеживаете res от линии var executeQuery = function(res, query){... с res от линии request.query(query, function (err, res) {.... Просто переименуйте последний res во что-то другое, и вы не получите эту ошибку:

request.query(query, function (err, result) {
  if (err) {
    console.log("Error al correr query en la base :- " + err);
    res.send(err);
  }
  else {
    res.send(result);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...