首页 > 解决方案 > CastError 与 GET 端点但不是与 Express / Mongoose 中的 POST 端点?

问题描述

我正在使用猫鼬查询测试从 id 获取用户数据的端点。我的代码像 POST 端点一样工作,但如果端点更改为 GET,则会返回一个奇怪的错误。

router.route("/test").get(async (req, res) => { // works for POST route and request, not GET
  const ids = req.body.ids;
  users = [];
  for (let i = 0; i < ids.length; i++) {
    const userData = await User.findById(ids[i]);
    users.push(userData);
  }
  res.json(users);
});

使用上面的代码,我收到此错误:“错误:CastError:Cast to ObjectId failed for value “test” at path “_id” for model “Group””

用 POST 替换请求类型,我得到了我想要的结果。当其余代码相同时,为什么会出现这种情况?

标签: node.jsmongodbexpressmongoose

解决方案


不要让端点有点类似的
例子:

product/:id

and similar with

item/:id

使您的端点独一无二

product/:id_product

item/:id_item

核心是,检查您的端点并使其独一无二!
上面的例子是我遇到的一个案例


推荐阅读