我的应用程序在本地运行,但在生产中我似乎无法使用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制作服务器上它不起作用。
我在这里读了一些关于这种类型的施法错误的内容:
但还没有运气。任何帮助都会很棒。先感谢您。
答案 0 :(得分:1)
对于mongoose
版本>我有时会遇到同样的问题。 4.7.2
我通过安装mongoose
版本4.7.2
npm install mongoose@4.7.2
另外,您可以更改package.json
,以便它使用mongoose的确切版本。
"mongoose" : "4.7.2"
此错误是由于bson
包引起的。这给出了错误
Hex不是ObjectId创建的函数
在this链接中了解详情。
当mongoose
从版本4.7.2
更新为4.7.3
时,此错误已经开始。
当此错误解决后,您可以更新到mongoose
的更新版本。您可以跟踪错误here和here。
所以,最后你可以通过安装mongoose版本4.7.2来解决这个错误