CastError:对于值#34,Cast to ObjectId失败X"在路径" _id"对于模特"博客"

时间:2017-07-08 02:40:33

标签: node.js mongodb mongoose

嘿伙计们真的可以使用DELETE路线的帮助。我正在使用RESTful路由,尝试遵循约定,当添加删除路由时,我收到错误:

CastError:对于值#34,Cast to ObjectId失败; X"在路径" _id"对于模型"博客"

我已经在stackoverflow上搜索了这个问题,我能想到的最好的是mongoose的版本有一个bug。我把它推回到V 4.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 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

发现错误,它在我的ejs文件中。我注意到错误消息在第一个引号和实际id本身之间有一个空格,所以“92384759”而不是“92384759”。我删除了空间,它完美地工作。我的第二个错误是在原始问题中编辑错误消息(我应该复制并粘贴objectid而不是缩写为“X”)。 - Andy 9小时前