mongoose findById无法使用正确的标识

时间:2017-01-06 07:37:11

标签: node.js mongodb mongoose

我正在创建一个存储用户信息的数据库。以前,系统运行良好,在我执行mongoose的npm更新后,系统失败了,我不知道为什么。以下是我遇到的错误消息。

CastError: Cast to ObjectId failed for value "xxxxxxxxxxxxxxx" at path "_id" for model "User"

然后,我编写了一些简单的测试代码来测试数据库是否连接成功。例如:

User.findOne({firstName: "David"}, function(err, user){console.log(user.lastName)});

上述工作完美无缺。

然后我直接从数据库中找到了相应的Id,并创建了如下变量:

var testId = "abcde"

并尝试了以下代码:

User.findById(testId, function(err, user){console.log(user.firstName)});

然后它只输出错误消息。

我试过mongoose.Types.ObjectId.isValid('abcde')(abcde只是示例),它返回true。因此,我真的不知道为什么它不起作用......它是一个猫鼬虫吗?

如果你知道答案,请帮助,非常感谢!

1 个答案:

答案 0 :(得分:1)

我刚解决了这个问题。

正如我所提到的,在我更新了mongoose后,findById函数无效。我在代码上挣扎了好几天,当我今天早上醒来时,我突然想到升级我的node.js。

那很有效。

将node.js从v4.x.x升级到最新版本后,一切正常:)

这教会了我一个教训,我不应该单独升级单个模块并考虑兼容性问题。