Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript findByIdAndRemove导致错误_Javascript_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

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”(没有结束的空白)?