2017-07-19 168 views
0

我使用一个基本的形式来创建/删除MongoDB的信息。 我可以创造出足够精细的记录,当我提交表单,但是当我试图删除一条记录我不断收到此错误:猫鼬findByIdAndDelete/findOneAndRemove不删除

 Cast to ObjectId failed for value " 596f5d7770f6f0d0c2767d3f" at 
path "_id" for model "dwb_notes" 

我环顾四周,和大部分的答案我在这里看到的SO说话到运行的应用程序的多个实例或运行在同一端口上的多个程序等,以及与我的问题没有直接关系的其他各种解决方案(我认为),但我试过它们,无论如何无济于事。

我现在只有一个记录在db中进行测试。这里是我的模型:

function todoNotesModel(){ 
    const mongoose = require("mongoose"); 
    const Schema = mongoose.Schema; 

    const NotesSchema = new Schema({ 
     todoCompany : String, 
     todoIsFor : String, 
     todoPostedBy : String, 
     todoCompleted : Boolean, 
     todoPriority : String, 
     todoMessages : Array, 
     todoTitle : String,  
     todoDate : String 
    }); 

    const NotesModel = mongoose.model("dwb_notes", NotesSchema); 

    return NotesModel; 
} 

module.exports = todoNotesModel(); 

使用另一个HTML表单,上载,删除按钮指定文档ID (在这种情况下,其596f5d7770f6f0d0c2767d3f),并追加到删除按钮。 上提交,这个ID是通过传递给删除路线:

app.delete("/notesapi/:tabID", (request, response) => { 
    NotesModel.findByIdAndRemove(request.params.tabID, (error, data)=>{ 
     if(error){ 
      console.log("error in deleting yo!"); 
      throw error; 
     } else { 
      console.log("data all gone and deleted yo"); 
      response.status(204); 

     } 
    }); 
}); 

当我运行一个:db.dwb_notes.find().pretty()

我回来:

"_id" : ObjectId("596f5d7770f6f0d0c2767d3f"), 
"todoCompany" : "", 
"todoIsFor" : "", 
"todoPostedBy" : "LOGGED IN USER HERE", 
"todoCompleted" : false, 
"todoPriority" : "green", 
"todoTitle" : "", 
"todoDate" : "Wed Jul 19 2017 09:23:56 GMT-0400 (Eastern Daylight Time)", 
"todoMessages" : [ 
     "" 
], 
"__v" : 0 

这表明它的存在,所以我不”不明白为什么我得到这个错误。 任何想法?

+1

您是否尝试截断ObjectID字符串?在你的错误看起来你的ObjectID字符串中有一个空格。 –

+0

Howdy Zander,你是什么意思“截断”? – somdow

+1

对不起,我的意思是,约束:http://php.net/manual/en/function.trim.php –

回答

2

它看起来像你的错误是打印出你的MongoID字符串的额外空间。创建一个无效的MongoID字符串。

您可以使用:string.trim()Documentation

之前或之后的字符串删除任何空格。

+0

谢谢这真的很有帮助。东西太小了。赞德,也许你可以帮助我与这个其他问题一直有,我不能找出位于这里:https://stackoverflow.com/questions/45130054/ajax-network-error-even-though-it-passes-the -信息 – somdow