模型“Coach”的路径“_id”处的值“”转换为 ObjectId 失败

Posted

技术标签:

【中文标题】模型“Coach”的路径“_id”处的值“”转换为 ObjectId 失败【英文标题】:Cast to ObjectId failed for value "" at path "_id" for model "Coach" 【发布时间】:2017-05-23 21:21:43 【问题描述】:

我的应用程序在本地运行,但在生产中我似乎无法使用 mongoose 从 mongo 获取特定的东西。我试过了:

var Coach = mongoose.model('Coach', CoachSchema);

Coach.findOne( _id: req.session.userId, function (err, coach) ) Coach.find( _id:req.session.userId, function (err, coach) ) Coach.findById(req.session.userId).exec(function(err, coach)))

我收到了同样的错误: Cast to ObjectId failed for value "586bc06bd09d870012baa5b8" at path "_id" for model "Coach"

就像我说的,它在本地与 nodemonheroku local 一起工作,但在我的 heroku 生产服务器上它不起作用。

我在这里读到了一些关于这种类型转换错误的信息:

What's Mongoose error Cast to ObjectId failed for value XXX at path "_id"? Mongoose refuses to cast valid string to ObjectId Cast to ObjectId failed for value "586cc8b3ea780c071bbe2469" at path "_id" for model "User"

但还没有运气。任何帮助都会很棒。先感谢您。

【问题讨论】:

Cast to ObjectId failed for value "586cc8b3ea780c071bbe2469" at path "_id" for model "User"的可能重复 【参考方案1】:

我有时也遇到过同样的问题,mongoose 版本 > 4.7.2

我通过安装mongoose 4.7.2 版解决了这个问题

npm install mongoose@4.7.2

另外,您可以更改您的package.json,以便它使用这个确切版本的猫鼬。

"mongoose" : "4.7.2"

这个错误是由bson 包引起的。这给出了错误

Hex 不是创建 ObjectId 的函数

在this 链接中了解更多信息。

mongoose 从版本4.7.2 更新到4.7.3 时,这个错误就开始了。 解决此错误后,您可以更新到 mongoose 的更新版本。您可以跟踪错误here 和here。

所以,最后你可以通过安装猫鼬版本 4.7.2 来解决这个错误

【讨论】:

以上是关于模型“Coach”的路径“_id”处的值“”转换为 ObjectId 失败的主要内容,如果未能解决你的问题,请参考以下文章

模型的路径“_id”处的值“”转换为 ObjectId 失败

CastError:模型的路径“_id”处的值“:id”转换为 ObjectId 失败

CastError:模型“Company”的路径“_id”处的值“...”转换为 ObjectId 失败

CastError:模型“Company”的路径“_id”处的值“...”转换为 ObjectId 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败

CastError:对于猫鼬中模型的路径“_id”处的值“findByName”,转换为 ObjectId 失败