当向/顾客/41224d776a326fb40f000001
发送请求时,并且不存在带有_id
41224d776a326fb40f000001
的文档,doc
为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);
});
};
但是,当\u id
与Mongoose期望的“格式”(我想)不匹配时(例如GET/customers/foo
会返回一个奇怪的错误:
CastError:对于路径“\u id”处的值“foo”,转换为ObjectId失败。
那么这个错误是什么?
我必须将我的路线移动到捕捉路线参数的其他路线之上:
// require express and express router
const express = require("express");
const router = express.Router();
// move this `/post/like` route on top
router.put("/post/like", requireSignin, like);
// keep the route with route parameter `/:postId` below regular routes
router.get("/post/:postId", singlePost);
使用现有函数检查ObjectID。
var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');
Mongoose的findById
方法将id
参数强制转换为模型的\u 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.
}
我试图在一个MEAN堆栈应用程序中处理一个计划。当我调用findOne时,我得到了这个错误: 我就是这样做的: 我注意到,当我把id作为一个字符串(如下所示)时,一切正常。 所以,我控制台: 我一直在尝试我在这里找到的东西,但任何东西都可以帮助我解决这个问题:/
我正在用node/express/mongo/mongoose构建一个应用程序。我遇到了一个我似乎无法理解的错误,谷歌搜索到目前为止没有任何帮助。 我创建了一个简单的、以猫为主题的示例来重现我遇到的错误。我基本上是通过ObjectId检索一个对象。我正在使用创建对象时自动生成的对象id(作为字符串)。 当我导航到路径localhost:3000/kitty/586d62878fc14d30e0ac
好吧,我看到这里有一些这样的帖子,但他们没有帮助我。。。 让我描述一下我的问题: 我有两个模式 现在我已经有了一个B对象,我想创建一个a对象。 所以我这样做: b对象是从我的monogDB加载的。调试器为我的b显示了一个有效的ObjectId(53627ed535d9d04416e26218或Sb~Õ5ÙÐDáb)。 但是,当我保存新的A-Object时,会出现错误:“CastError:Cast
我的控制器obter_todos_precos只是一个console.log,没有使用任何模型,但我得到以下错误: 为什么我会有这种行为?
Comments是嵌套在Post架构中的数组。我想通过推送一个新的评论到评论数组更新相应的帖子。但是得到了错误:CastError:对于模型“post”的路径“_id”处的值“comments”,向ObjectId的强制转换失败 阅读相关帖子 尝试使用“mongoose.types.objectid”,但不起作用 猫鼬版^5.5.4 我在这里使用的所有ID都是有效的 我认为问题出在“comment
我正在尝试用mongodb和nodejs制作一个应用程序。我做了一个特殊的路由,它有参数,并且运行良好。 我还做了另一个get路线,它有。每次我收到该错误时向该路由发送请求时: 我的路线是: 当我向上面的路由发出get请求时,我得到了该错误: 我的产品模型是: 我怎样才能解决这个问题?