findByIdAndDelete 实际上并没有删除文档,只是将每个键的值清空



>新手在这里使用MongoDB在node.js/express中使用猫鼬来尝试建立自己的婚礼网站。我的应用程序中有.js:

var Guest           =       require("./models/guest");
...
app.delete("/guests/:id", (req, res)=>{
Guest.findByIdAndDelete(req.params.id, (err, deletedGuest)=>{
if(err){
console.log(err);
res.redirect("/guests");
} else {
console.log("deleted: " + deletedGuest);
res.redirect("/guests");

}
})
})

与模型

var mongoose = require("mongoose");
var guestSchema = new mongoose.Schema({
name: String,
email: String,
isComing: Boolean,
})
module.exports = mongoose.model("Guest", guestSchema);

还有一个 html 访客表,每个客人旁边都有一个删除按钮。因此,如果我尝试通过单击其姓名旁边的按钮来删除来宾,它将该来宾的姓名,电子邮件和isComing 设置为null,但不会删除它。换句话说,对于客人:

{ "_id" : ObjectId("5ef811d5ea932d06d38537f5"), "name" : "Steve Stevenson", "email" : "steve@steve.com", "isComing" : true, "__v" : 0 }

如果我按"删除",我会得到:

{ "_id" : ObjectId("5ef811d5ea932d06d38537f5"), "name" : null, "email" : null, "isComing" : null, "__v" : 0 }

ID 保持不变,它只是删除其他键中的所有值,除了"__v"字段。(顺便说一句,我也不知道那是什么(。控制台中不记录任何内容 - 没有错误或删除来宾。知道我做错了什么吗?也欢迎其他一般建议 - 我正在尝试在这里学习。

事实证明,问题是我忘记设置方法覆盖。所以它只是发送一个带有该 ID 的空白 post 请求——因此每个键的空值。哎 呦。

最新更新