对于值#34,""转换为ObjectId失败在路径" _id" for model" Coach"

时间:2017-01-09 15:10:15

标签: node.js mongodb express heroku mongoose

我的应用程序在本地运行,但在生产中我似乎无法使用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制作服务器上它不起作用。

我在这里读了一些关于这种类型的施法错误的内容:

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

1 个答案:

答案 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的更新版本。您可以跟踪错误herehere

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