gpt4 book ai didi

node.js - Node js Express路由冲突问题

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:26 26 4
gpt4 key购买 nike

在我的 Node js 应用程序中,我有以下路由。

router.get('/:id', [auth], asyncHandler(async (req, res) => {
const post = await postService.getPostById(req.params.id);
res.json(post);
}));

router.get('/all', [auth], asyncHandler(async (req, res) => {
const posts = await postService.getAllPosts(req.user.id);
res.json(posts);
}));

在这里,当我调用 post/all 路由时,它崩溃了。它表示,模型“Post”的路径“_id”处的值“all”转换为 ObjectId 失败,模型“Post”的路径“_id”处的值“all”转换为 ObjectId 失败

但是如果我评论第一条路线,第二条路线就完美。为什么会出现这种情况?

最佳答案

这是因为 /all 也匹配 /:id。您需要做的是将 /all 移至 /:id 上方:

// Match this first
router.get('/all', [auth], asyncHandler(async (req, res) => {
const posts = await postService.getAllPosts(req.user.id);
res.json(posts);
}));

// Then if not /all treat route as the variable `id`
router.get('/:id', [auth], asyncHandler(async (req, res) => {
const post = await postService.getPostById(req.params.id);
res.json(post);
}));

关于node.js - Node js Express路由冲突问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58707933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com