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.
我正在使用 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.