首页 > 解决方案 > 续集模型查询-为什么两条路线不能同时工作?

问题描述

我正在使用 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"
  }
]

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

标签: javascriptexpresssequelize.js

解决方案


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

你有一个路由 /:id 和另一个 /:category_name。在测试这些路由时,您可能知道您打算访问哪一个,但服务器不知道。

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


推荐阅读