在postman中测试我的api路由时,我收到此错误“对于模型“User”的路径“_id”处的值“632aa0c8930ca0decc7d042b\n”(类型字符串),转换为ObjectId失败"。
下面是更新API的控制器和路由部分:
//路由
/api/users/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//控制器
更新用户:异步(请求,资源)=〉{
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, {new:true, runValidators:true})
res.status(200).json(updatedUser)
} catch(err) {
res.status(500).json(err)
}
}
下面是postman中显示的错误:{“字符串值”:““632 aa 0 c8930 ca 0 decc 7 d 042 b”",请输入您的密码,
“值类型”:“字符串”,
“种类”:“对象ID”,
“数值”:“632 aa 0 c8930 ca 0 decc 7 d 042 b”,
“路径”:“_id”,
“原因”:{},
“名称”:“转换错误”,
“消息”:“在模型“User”得路径“_id”处,将值“632aa0c8930ca0decc7d042b\n”(类型字符串)强制转换为ObjectId失败”}
会有什么问题吗?任何帮助都将不胜感激
1条答案
按热度按时间eyh26e7m1#
它说;您尝试查找ById Id必须是ObjectId但您值是字符串
要解决它你需要使用;
请尝试此操作,如果“\n”出现问题,则需要将数据作为字符串发送,如ObjectId('632 aa 0 c8930 ca 0 decc 7 d 042 b')。
如果它总是带有“\n”,那么您需要将其拆分,然后将以下内容写入findByIdAndUpdate:
希望对你有帮助,如果没有,请批评指正。