为什么我对同一路径的多个GET请求无法正常工作,而只有第一个有效?

时间:2018-12-04 09:33:37

标签: node.js get

这些是我的代码。我想知道为什么我的第一个GET请求只能工作,而第二个不能?

我正在尝试从2个表中提取数据,但希望将它们呈现给2个不同字段的同一页面。

// GET ALL CATEGORIES
  app.get("/company", function (req, res) {
    db.Category.findAll({
      attributes: ["categoryName"],
      raw: true
    }).then(function (data) {
      // res.json(dbCategory);
      var dbCategory = {
        dbCategory: data
      };
      console.log(dbCategory);
      res.render("companyPage", dbCategory);
    });
  });

  // GET ALL MANUFACTURER
  app.get("/company", function (req, res) {
    db.Manufacturer.findAll({
      attributes: ["manufacturerName"],
      raw: true
    }).then(function (data) {
      var dbManufacturer = {
        dbManufacturer: data
      };
      console.log(dbManufacturer);
      res.render("companyPage", dbManufacturer);
    });
  });

3 个答案:

答案 0 :(得分:1)

由于要定义相同的路线,因此可以更改第二条路线并相应地使用字段进行更新。

 // GET ALL CATEGORIES
  app.get("/company", function (req, res) {
    db.Category.findAll({
      attributes: ["categoryName"],
      raw: true
    }).then(function (data) {
      // res.json(dbCategory);
      var dbCategory = {
        dbCategory: data
      };
      console.log(dbCategory);
      res.render("companyPage", dbCategory);
    });
  });

  // GET ALL MANUFACTURER
  app.get("/company/manufacturer", function (req, res) {
    db.Manufacturer.findAll({
      attributes: ["manufacturerName"],
      raw: true
    }).then(function (data) {
      var dbManufacturer = {
        dbManufacturer: data
      };
      console.log(dbManufacturer);
      res.render("companyPage", dbManufacturer);
    });
  });

答案 1 :(得分:1)

GET端点不起作用,因为您定义了相同的路由。 这个问题可以用

解决

1。按照上述答案中的说明使用不同的路线

2。如果希望两个操作都在/ company上执行,则在单个GET端点下合并两个操作

检查示例代码以获取更多参考:

// GET ALL CATEGORIES
app.get("/company", function (req, res) {
db.Category.findAll({
  attributes: ["categoryName"],
  raw: true
}).then(function (dbCategory) {
  // GET ALL MANUFACTURER
  db.Manufacturer.findAll({
    attributes: ["manufacturerName"],
    raw: true
  }).then(function (dbManufacturer) {
    var dbStuff = {
      dbCategory,
      dbManufacturer,
      msg: "Christmas Toy Store"
    };
    console.log(dbStuff);
    res.render("companyPage", dbStuff);
  });
});
});

答案 2 :(得分:0)

因为您获得了第一个路径“ / compagny”。

如果要使两个数据具有相同的路径,则应将所有数据都写在相同的get函数中。

尝试一下:

app.get("/company", async function (req, res) {
  const dataCategory = db.Category.findAll({
    attributes: ["categoryName"],
    raw: true 
  });
  const dataManufacturer = db.Manufacturer.findAll({
      attributes: ["manufacturerName"],
      raw: true
  });
  const [dbCategory, dbManufacturer] = await Promise.all([dataCategory,dataManufacturer]);
  res.render("companyPage",{
    dbCategory,
    dbManufacturer
  });
});