Sequelize 模型查询 - 为什么两条路线不能同时工作?

Sequelize model querying- Why don't both routes work at same time?

我正在使用 Express 中的一些路由,使用 Sequelize 创建我的模型。 我有两个模型,它们彼此独立工作。但我希望他们同时工作。对于有经验的人来说,这可能是一个显而易见的原因。

我的第一条路线通过主键获取项目:

router.get('/:id', async (req, res) => {
  try {
    const categoryData = await Category.findByPk(req.params.id)
    .then((result) => {
      res.status(200).json(result);
    });

  } catch (err) {
    res.status(500).json(err)
  }
});

此查询的示例结果如下:

{
  "id": 1,
  "category_name": "Shirts"
}

我的第二条路线通过另一个参数获取结果,category_name

这是这条路线:

router.get('/:category_name', async (req, res) => {
  try {
    const categoryData = await Category.findAll({
      where: {category_name: req.params.category_name}
    })
    .then((result) => {
      res.status(200).json(result);
    });

  } catch (err) {
    res.status(500).json(err)
  }
});

结果如下所示:

[
  {
    "id": 2,
    "category_name": "Shorts"
  }
]

但是,我一次只能使用一条路线。如果两条路线都打开,则只有一条路线有效。为什么??

服务器无法区分这两个可变端点路径。

你有一个路由/:id,还有一个/:category_name。在测试这些路线时,您可能知道您打算命中哪一条,但服务器不知道。

考虑在路径中添加另一个级别,例如 /name/:category_name 和 /id/:id.