因此,我已阅读并尝试为此实施其他解决方案。我只想弄清楚为什么它不适合我。这是我的第一个后端工作项目。我正在通过一门课程,但我想自己尝试一些方法来使概念坚持下去。
这是我的架构
//ANIMAL
var animalSchema = new mongoose.Schema({
image: String,
name: String,
variety: String,
DOB: Date,
logs: [{
amount: Number,
notes: String,
dateMilked: Date
}],
created: { type: Date, default: Date.now }
});

到目前为止,除了删除日志之外,我还设法让动物和日志的所有RESTful路由工作。
这就是我所拥有的,但它不会删除任何内容 - 它也不会抛出任何错误。
app.delete("/animals/:id/logs/:id", function(req, res) {
Animal.findOneAndUpdate({ 'logs._id': req.params.id }, {
$pull: {
"logs": { "_id": req.body.id }
}
}, { safe: true, multi: true },
function(err, foundAnimal) {
if (err) {
console.log(err);
res.redirect("/");
}
else {
res.redirect("/animals/" + foundAnimal._id + "/logs");
}
});
});

任何帮助或见解都会很棒!!我正在学习!
答案 0 :(得分:0)
我认为问题是req.body.id可能没有任何值,因为你在路径中发送两个id。 如果你称他们为app.delete(“/ animals /:id / logs /:id”),我很确定req.params.id会有两个值中的一个,但你不会是能够得到另一个。
您应该使用不同的名称来调用它们,例如:
app.delete("/animals/:animalId/logs/:logId",
然后您可以访问这两个变量而不会发生任何冲突:
req.params.animalId
req.params.logId
希望有所帮助