我正在做一个待办事项列表应用程序。我想从数组中删除一个元素,但使用Model.findOneAndUpdate()无法正常工作。如果我在语法上犯了错误,请帮助我,或者你可以建议另一种方法。
app.post("/delete", function(req,res){
const checkedItemId = req.body.checkbox.trim();
const listName = req.body.nameOfItemToDelete;
if (listName==="Today"){
Item.findOneAndDelete(checkedItemId)
.then(function (item) {
res.redirect("/")
console.log("item is deleted")
})
.catch(function (err) {
res.redirect("/")
console.log("err while deleting")
})
}
else{
List.findOneAndUpdate({ name: listName }, { $pull: { items: { _id: checkedItemId } } })
.then(function(foundlist){
res.redirect("/"+listName)
})
}
})
字符串
请审查的代码,如果可能的话,然后帮助我
1条答案
按热度按时间k4ymrczo1#
试试看:
字符串
根据您的注解,您需要确保您的List模式引用了docs中建议的Item模式子文档,如下所示:
型
这样,每个项目都是一个子文档,
List
包含与该列表相关的所有相关ObjectId
的数组。这是处理两个文档之间引用的最佳方式。否则,你的items
只是一个字符串数组,你将需要使用传统的搜索技术从数组中提取项目(通过索引选择,使用循环或array.find()
等),这些项目没有像子文档那样优化。