当前位置: 首页 > 知识库问答 >
问题:

CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败

吕承福
2023-03-14

嘿,伙计们真的需要一些关于删除路由的帮助。我正在使用RESTful路由,尝试遵循约定,添加删除路由时,我得到错误:

CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败

我已经在stackoverflow上搜索了这个问题,我能想到的最好的版本是猫鼬有一个错误。我把它回滚到V4.10.0,仍然在处理这个问题。我的代码如下:

var express    = require("express"),
app        = express(),
bodyParser = require("body-parser"),
mongoose   = require("mongoose"),
methodOverride = require("method-override");


           // APP CONFIG
app.set("view engine", "ejs");
app.use(express.static("public"));
app.use(bodyParser.urlencoded({extended: true}));
app.use(methodOverride("_method"));

mongoose.connect("mongodb://localhost/restful_blog_app");

// Create a new Blog Schema defines what the object will be

var Blog = new mongoose.Schema ({
    title: String,
    image: String, //{type: String, default: "placeholder.jpg"} for a default image
    body: String,
    created: {type: Date, default: Date.now}
});

// Mongoose compiles the Schema into a model, useable object
var Blog = mongoose.model("Blog", Blog);


// DELETE ROUTE 

app.delete("/blogs/:id", function(req, res){
    Blog.findByIdAndRemove(req.params.id, function(err){
        if(err){
            console.log(err)
        }

    })
})

共有2个答案

夏英发
2023-03-14

找到错误,它在我的ejs文件中。我注意到错误消息在第一个引号和实际id之间有一个空格,所以是“92384759”,而不是“92384759”。我把空间移走了,效果很好。我的第二个错误是编辑原始问题中的错误消息(我应该复制并粘贴objectid,而不是缩写为“X”)。-安迪9小时前

江阳羽
2023-03-14

我认为您获得的id参数不是有效的ObjectId字符串,因此无法将其强制转换为ObjectId对象

这里有一些关于ObjectId的信息,请检查是否传递了有效的ObjectId。

 类似资料:
  • 前言:我对猫鼬/Express的工作相对来说是新手。 我试图制作一个应用程序,其中一个名为“space”的猫鼬模式中有一个名为“posts”的数组。数组的内容是对另一个名为“POST”的猫鼬模式的ObjectId引用。然而,每次我对应该发送回我的空间和其中的帖子的路线提出GET请求时,我都会得到一个严重的错误。此外,我的帖子没有填充我的空间。 错误:CastError:对于模型“space”的路径

  • 我试图通过id从mongo检索数据,但当我添加外部链接(如样式文件或脚本文件)时,它工作正常,我收到此错误消息。 消息:“对模型“Blog”路径“_id”处的值“script.js”的转换失败,名称:“CastError”,stringValue:“script.js”,种类:“ObjectId”,值:“script”。js',路径:''u id',原因:未定义,模型:

  • 我看到了几个帖子与类似的我但我仍然得到同样的错误 这是我的用户模式 我的路线 我的应用程序。js 这是我的护照。我正在使用本地护照 passport可以将用户保存到数据库中 模型“用户”的路径“_id”处的值“586cc8b3ea780c071bbe2469”转换为ObjectId失败 我已经构建了两个应用程序,它们使用passport oauth,与上面显示的方式完全相同。所以我不知道为什么我会

  • Comments是嵌套在Post架构中的数组。我想通过推送一个新的评论到评论数组更新相应的帖子。但是得到了错误:CastError:对于模型“post”的路径“_id”处的值“comments”,向ObjectId的强制转换失败 阅读相关帖子 尝试使用“mongoose.types.objectid”,但不起作用 猫鼬版^5.5.4 我在这里使用的所有ID都是有效的 我认为问题出在“comment

  • 我正在构建一个应用程序与节点/快递/蒙戈/猫鼬。我遇到了一个似乎无法解决的错误,谷歌搜索到目前为止没有帮助。 我试图创建一个编辑页面,但遇到了一个错误。 Package.json 编辑页面。ejs admin_pages.js 在这篇文章中,我遇到了这个错误

  • 好吧,我看到这里有一些这样的帖子,但他们没有帮助我。。。 让我描述一下我的问题: 我有两个模式 现在我已经有了一个B对象,我想创建一个a对象。 所以我这样做: b对象是从我的monogDB加载的。调试器为我的b显示了一个有效的ObjectId(53627ed535d9d04416e26218或Sb~Õ5ÙÐDáb)。 但是,当我保存新的A-Object时,会出现错误:“CastError:Cast