嘿伙计们真的可以使用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)
}
})
})
答案 0 :(得分:0)
我认为您获得的id
参数不是有效的 ObjectId 字符串,因此无法将其转换为 ObjectId < / em> 对象。
Here您有关于ObjectId的一些信息,请检查您是否传递了有效的信息。
答案 1 :(得分:0)
发现错误,它在我的ejs文件中。我注意到错误消息在第一个引号和实际id本身之间有一个空格,所以“92384759”而不是“92384759”。我删除了空间,它完美地工作。我的第二个错误是在原始问题中编辑错误消息(我应该复制并粘贴objectid而不是缩写为“X”)。 - Andy 9小时前