Javascript findByIdAndRemove导致错误
谁能帮我找出为什么猫鼬会在下面的删除路径中找到并删除Javascript findByIdAndRemove导致错误,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,谁能帮我找出为什么猫鼬会在下面的删除路径中找到并删除 //DELETE Route app.delete("/blogs/:id", function(req, res){ //Destroy blog Blog.findByIdAndRemove(req.params.id, function(err){ if(err){ res.send(err); } else { res.redirect("/blogs"); } }); })
//DELETE Route
app.delete("/blogs/:id", function(req, res){
//Destroy blog
Blog.findByIdAndRemove(req.params.id, function(err){
if(err){
res.send(err);
} else {
res.redirect("/blogs");
}
});
});
…生成以下错误:
message: "Cast to ObjectId failed for value "5a6a8f967c9a190507b03433 " at path "_id" for model "Blog"",
name: "CastError",
stringValue: ""5a6a8f967c9a190507b03433 "",
kind: "ObjectId",
value: "5a6a8f967c9a190507b03433 ",
path: "_id"
非常感谢您的帮助。问题在于,您正在从客户端发送一个16个字符长的字符串,而方法
findonebyiandremove
需要一个ObjectId。这样做可以消除这个问题,
var mongoose = require('mongoose'); //remove it as you might already it
var ObjectId = mongoose.Types.ObjectId;
app.delete("/blogs/:id", function(req, res){
//Destroy blog
Blog.findByIdAndRemove(ObjectId(req.params.id), function(err){
if(err){
res.send(err);
} else {
res.redirect("/blogs");
}
});
});
另外,请确保
\u id
长度为16个字符,两边不允许有空格。非常感谢@vicbyte和Nilesh Singh的贡献
实际上,由于id末尾的空格“5a6a8f967c9a190507b03433”,代码失败。空格来自发出删除命令的表单:
<form id="delete" action="/blogs/<%= blog.id %> ?_method=DELETE" Method ="POST">
<button class = "ui red basic button">Delete</button>
</form>
删除
修改表格如下
<form id="delete" action="/blogs/<%= blog.id %>?_method=DELETE" Method ="POST">
<button class = "ui red basic button">Delete</button>
</form>
删除
清除错误。
你能检查是否仍然发生错误,“5A6A8F967 C9A40507B034 33”(没有结束的空白)?