CastError:在 findOne 和其他中,模型“Users”的路径“_id”处的值“0”(类型字符串)转换为 ObjectId 失败
Posted
技术标签:
【中文标题】CastError:在 findOne 和其他中,模型“Users”的路径“_id”处的值“0”(类型字符串)转换为 ObjectId 失败【英文标题】:CastError: Cast to ObjectId failed for value "0" (type string) at path "_id" for model "Users", in findOne and others 【发布时间】:2021-12-25 14:53:06 【问题描述】:我对 mongodb 和 nodejs 还很陌生。当我尝试获取特定用户时出现错误 来自数据库的 req.params.id。
app.get('/user/:id', (req,res) =>
console.log(req.params.id)
Users.findOne(_id: req.params.id, (err,user) =>
if(!err)
res.send(user)
console.log(user);
else
console.log(err);
res.status(500).send('Error Happened')
)
)
在 mongodb atlas 我得到 _id :(十六进制字符串) 姓名 : 电子邮件: 地址: __v:
。 包含 req.params.id 的每一行或每一块代码都会出错,而 Users.save() 正在工作并且 .remove() 也可以正常工作,我认为 .find() 也可以正常工作
【问题讨论】:
这有帮助吗? ***.com/questions/30051236/… @about14sheep ,它可以,但是如何在 es6 中导入 objectId ?当我导入它时,它给了我这样的错误。当我把 _id: new ObjectId(req.params.id)var ObjectId = require('mongodb').ObjectID;
将是如何导入它。尝试删除新关键字
@about14sheep 在 .mjs 扩展中不起作用。我应该将其转换为 .js 吗?
对不起,我以为你在使用 commonjs。对于 .mjs,导入语句将是 import ObjectID from 'mongodb'
【参考方案1】:
在 MongoDB 中,ObjectId
的 strict requirement 是一个 12 字节的字符串。
"1"
不是有效的 ObjectId。
【讨论】:
是的,但我如何通过参数获得它? 我更新了代码并编写了我正在处理的整个代码,这是一个基本的 crud 应用程序以上是关于CastError:在 findOne 和其他中,模型“Users”的路径“_id”处的值“0”(类型字符串)转换为 ObjectId 失败的主要内容,如果未能解决你的问题,请参考以下文章
CastError:在路径“_id”处转换为 ObjectId 失败
CastError:TypeScript REST 和 Mongoose 中路径“_id”处值“1225589795”的值“1225589795”转换为 ObjectId 失败
在 MongooseError.CastError 连接 500 错误