我使用一個基本的形式來創建/刪除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
這表明它的存在,所以我不」不明白爲什麼我得到這個錯誤。 任何想法?
您是否嘗試截斷ObjectID字符串?在你的錯誤看起來你的ObjectID字符串中有一個空格。 –
Howdy Zander,你是什麼意思「截斷」? – somdow
對不起,我的意思是,約束:http://php.net/manual/en/function.trim.php –