我正在创建一个存储用户信息的数据库。以前,系统运行良好,在我执行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。因此,我真的不知道为什么它不起作用......它是一个猫鼬虫吗?
如果你知道答案,请帮助,非常感谢!
答案 0 :(得分:1)
我刚解决了这个问题。
正如我所提到的,在我更新了mongoose后,findById函数无效。我在代码上挣扎了好几天,当我今天早上醒来时,我突然想到升级我的node.js。
那很有效。
将node.js从v4.x.x升级到最新版本后,一切正常:)
这教会了我一个教训,我不应该单独升级单个模块并考虑兼容性问题。