在AWS上运行的NodeJS App的Mongoose CastError

时间:2017-01-04 01:06:28

标签: node.js mongodb amazon-ec2 mongoose

基本上,我的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中。

最近几天前,这种方法正常运作。它突然开始发出错误,我没有更改代码。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

试试这个:

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

我想,mongoose已在您的代码中定义。

答案 1 :(得分:0)

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

您不必将变量blogId转换为ObjectId类型, 这段代码还可以:

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