javascript - 快速路由器 :id

标签 javascript sql-server node.js express

这是我第一次尝试使用 Angular/Nodejs/Express 从 SQL Server 获取信息。我尝试了几种不同的实现,结果似乎是一样的。这应该很容易,我在这里做错了什么?使用 Postman,无论我使用哪条路线,它都会返回所有记录。/:id 的路由也带回所有记录,而不仅仅是一条记录。感谢您的帮助!

var express = require('express'); // Web Framework
var bodyParser = require('body-parser');
var sql = require('mssql'); // MS Sql Server client
var app = express();


app.use(bodyParser.json({
  type: 'application/json'
}));

var router = express.Router();
app.use("/api/images/", router)

//CORS Middleware
app.use(function(req, res, next) {
  //Enabling CORS 
  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);
});

// Connection string parameters.
var dbConfig = {
  user: 'sa',
  password: '',
  server: 'localhost\\SQLEXPRESS01',
  database: 'ImageDB'
};

//Function to connect to database and execute query
var executeQuery = function(res, query, next) {
  sql.connect(dbConfig, function(err) {
    if (err) {
      console.log("Error while connecting database :- " + err);
      res.send(err);
    } else {
      // create Request object
      var request = new sql.Request();
      // query to the database
      request.query(query, function(err, rs) {
        if (err) {
          console.log("Error while querying database :- " + err);
          res.send(err);
        } else {
          res.send(rs);
        }
      });
    }
  });
}

//GET API
router.get("/:id", function(req, res) {
  var id = req.params.id;
  var query = "select * from [TestTable] where ID = " + id;
  executeQuery(res, query);
});


router.get("/", function(req, res) {
  var query = "select * from [TestTable]";
  executeQuery(res, query);
});

module.export = router;

最佳答案

注释掉您的 router.get("/".. 路由,然后点击 api 并检查 router.get("/:id".. 是否真的在点击,可能是在您调用api 你的 router.get("/"... 调用而不是 router.get(":id"... 路由这就是你返回所有数据的原因。然后检查为什么你的 :id 路由没有命中因为如果您的 sql 查询正常,:id 路由将永远不会返回所有数据。

关于javascript - 快速路由器 :id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45340070/

相关文章:

sql - 如何创建硬编码日期参数以在查询中使用?

node.js - 序列化 findAll 排除字段

html - 当点击按钮值在 Angular js中不更新时

javascript - Web api 未从 angularjs 接收日期

javascript - 图例中的 Chartjs 百分比

javascript - 从 chrome 扩展中的 html 中删除 div

javascript - Angular 2 下拉指令

sql - 开发递归/层次结构查询

c# - SQL 输出存储过程不适用于 ExecuteReader

node.js - api.ai 使用不同的输入循环相同的意图