我的应用程序在本地运行,但在生产中,我似乎无法使用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生产服务器上它不工作。
我在这里读到一些关于这种类型的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
。您可以跟踪bughere和here。所以,最后可以通过安装Mongoose4.7.2版本来解决这个错误