我的应用程序在本地运行,但在生产中,我似乎无法使用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生产服务器上它不工作。
我在这里读到一些关于这种类型的cast错误的信息:
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"
但还没有运气。任何帮助都很好。提前谢谢你。

最佳答案

我以前也遇到过同样的问题,因为mongoose版本>4.7.2
我通过安装mongoose版本4.7.2解决了这个问题

npm install [email protected]

此外,您还可以更改package.json,以便它使用这一版本的猫鼬。
"mongoose" : "4.7.2"

此错误是由bson包引起的。这就产生了错误
hex不是objectid创建的函数
this链接中阅读更多信息。
mongoose从版本4.7.2更新到4.7.3时,此错误就开始了。
解决此错误后,您可以更新到较新版本的mongoose。您可以跟踪bugherehere
所以,最后可以通过安装Mongoose4.7.2版本来解决这个错误

08-04 12:48