【问题标题】:Mongoose CastError for NodeJS App running on AWS在 AWS 上运行的 NodeJS 应用程序的 Mongoose CastError
【发布时间】:2017-05-18 04:57:34
【问题描述】:

基本上,我的 Node 服务器上有一些这样的代码:

var blogId =  req.params.blogId;   
Blog.findById(blogId).exec(...)

我收到此错误: {"message":"Cast to ObjectId failed for value \"5767399a90bf3cc2828d2cd6\" at path \"_id\" for model \"Blog\"","name":"CastError","stringValue":"\"5767399a90bf3cc2828d2cd6\"","kind":"ObjectId","value":"5767399a90bf3cc2828d2cd6","path":"_id"}

我只在我的 EC2 实例上收到此错误,而不是在我的计算机上本地运行它时。如您所见,这是一个格式正确的 ObjectId 字符串,我已经验证它存在于我的 MongoDB 中。

这在几天前还正常工作。它突然开始给出那个错误,我还没有更改代码。

有什么想法吗?

【问题讨论】:

    标签: node.js mongodb amazon-ec2 mongoose


    【解决方案1】:

    您可以尝试将其转换为 ObjectId 以确保安全。而且,希望它也能解决您的问题。

    试试这个:

    var blogId = mongoose.Types.ObjectId(req.params.blogId);
    Blog.findById(blogId).exec(...)
    

    我猜,mongoose 已经在您的代码中定义了。

    【讨论】:

      【解决方案2】:

      您的 EC2 实例上有哪个版本的节点? 最近我发现了这样一个错误并通过将节点更新到版本 6 来修复它。

      您不必将变量 blogId 转换为 ObjectId 类型, 这段代码没问题:

      var blogId =  req.params.blogId;   
      Blog.findById(blogId).exec(...)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-09
        • 2021-08-03
        • 2013-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多