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:路径中值“未定义”的数字转换失败

CastError:在路径“_id”处转换为 ObjectId 失败

CastError:TypeScript REST 和 Mongoose 中路径“_id”处值“1225589795”的值“1225589795”转换为 ObjectId 失败

在 MongooseError.CastError 连接 500 错误

试图在 mongoose 中填充一个嵌套数组,抛出一个看似无关的 CastError,我不明白为啥

Mongoose:(CastError)转换为 [ObjectId] 的值失败