- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用基本表单从 mongodb 创建/删除信息。当我提交表单时,我可以创建足够好的记录,但是当我尝试删除记录时,我不断收到此错误:
Cast to ObjectId failed for value " 596f5d7770f6f0d0c2767d3f" at
path "_id" for model "dwb_notes"
我环顾四周,我在这里看到的大多数答案都涉及正在运行的应用程序的多个实例或在同一端口上运行的多个程序等,以及与我的问题不直接相关的其他各种解决方案(我想)但我已经尝试过但无济于事。
我现在数据库中只有一条记录用于测试。这是我的模型:
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
它显示它在那里,所以我不明白为什么我会收到此错误。有什么想法吗?
最佳答案
看起来您的错误是在您的 MongoID 字符串中打印出了额外的空格。创建无效的 MongoID 字符串。
您可以使用:string.trim()
Documentation
删除字符串之前或之后的任何空格。
关于node.js - mongoose findByIdAndDelete/findOneAndRemove 不删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193379/
我正在学习 Udemy for Node js 类(class)。 Mongoose 预中间件与删除一起使用,如下所示。 ReviewSchema.pre('remove', function() {
我使用基本表单从 mongodb 创建/删除信息。当我提交表单时,我可以创建足够好的记录,但是当我尝试删除记录时,我不断收到此错误: Cast to ObjectId failed for
文档 here没有提供太多解释为什么有两种不同的操作来完成同一件事,所以我想知道它们之间有什么区别。为什么我会选择使用其中一种而不是另一种? 最佳答案 此函数与 Model.findOneAndRem
我正试图找到最好的方法来处理输出/响应中的捕获错误。 我有一条通过 ID 删除游戏的路线 router.delete("/delete/:id", (req, res) => { (async (
我是一名优秀的程序员,十分优秀!