模型“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"
就像我说的,它在本地与 nodemon
和 heroku 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 失败