node.js - 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 替换请求类型,我得到了我想要的结果。当其余代码相同时,为什么会出现这种情况?
解决方案
不要让端点有点类似的
例子:
product/:id
and similar with
item/:id
使您的端点独一无二
product/:id_product
item/:id_item
核心是,检查您的端点并使其独一无二!
上面的例子是我遇到的一个案例
推荐阅读
- database - 为什么我的数据库在将数据添加到另一个数据库时会变空?
- angular - 可以从 docker container exec 命令中访问 URL,但 Angular 应用程序获取 ERR_CONNECTION_TIMED_OUT
- javascript - 如何在reactjs中单击按钮多次显示项目?
- r - 如何从 R 中的 mp3 文件计算分贝
- react-native - 如何将使用 RNCamera 捕获的导航照片以网格形式或图库形式(具有指定的行和列)排列到不同的屏幕
- vb.net - Visual Basic:我正在尝试掷两个骰子
- python - 枚举 for 循环,打印不带空格的字符串
- python - 在`unstack`和`set_index`之后切片
- python - 有没有办法将计数器作为输入传递给 Tensorflow?
- abp - “授权失败!给定策略尚未授予。” 手动添加声明时