当发送请求至/customers/41224d776a326fb40f000001
和一个文件_id
41224d776a326fb40f000001
不存在,doc
is null
我正在返回一个404
:
Controller.prototype.show = function(id, res) {
this.model.findById(id, function(err, doc) {
if (err) {
throw err;
}
if (!doc) {
res.send(404);
}
return res.send(doc);
});
};
然而,当_id
与 Mongoose 期望的“格式”(我想)不匹配,例如GET /customers/foo
返回一个奇怪的错误:
CastError:路径“_id”处的值“foo”转换为 ObjectId 失败。
那么这个错误是什么?
猫鼬的findById
方法投射id
模型类型的参数_id
字段,以便它可以正确查询匹配的文档。这是一ObjectId
but "foo"
不是有效的ObjectId
所以演员阵容失败了。
这不会发生在41224d776a326fb40f000001
因为该字符串是有效的ObjectId
.
解决此问题的一种方法是在您的findById
打电话看看是否id
是一个有效的ObjectId
或者不这样:
if (id.match(/^[0-9a-fA-F]{24}$/)) {
// Yes, it's a valid ObjectId, proceed with `findById` call.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)