【问题标题】:Cast to ObjectId failed for value "" at path "_id" for model "Coach"模型“Coach”的路径“_id”处的值“”转换为 ObjectId 失败
【发布时间】: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"

就像我说的,它在本地与 nodemonheroku local 一起工作,但在我的 heroku 生产服务器上它不起作用。

我在这里读到了一些关于这种类型转换错误的信息:

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

【问题讨论】:

标签: node.js mongodb express heroku mongoose


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

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

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2020-11-19
    • 2021-05-12
    • 2021-07-04
    • 2017-08-18
    • 2019-06-26
    • 2014-06-20
    • 2017-05-19
    • 2017-11-10
    相关资源
    最近更新 更多