gpt4 book ai didi

mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed for value XXX at path "_id"?

转载 作者:IT老高 更新时间:2023-10-28 11:13:06 25 4
gpt4 key购买 nike

当向 /customers/41224d776a326fb40f000001 发送请求并且带有 _id 41224d776a326fb40f000001 的文档不存在时,docnull 并且我返回一个 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: Cast to ObjectId failed for value "foo" at path "_id".

那么这个错误是什么?

最佳答案

Mongoose 的 findById 方法将 id 参数转换为模型的 _id 字段的类型,以便它可以正确查询匹配的文档。这是一个 ObjectId,但 "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.
}

关于mongodb - 什么是 Mongoose 错误 Cast to ObjectId failed for value XXX at path "_id"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14940660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com