【发布时间】:2021-08-18 08:26:30
【问题描述】:
在我的 To-Do 应用中,当登录用户完成一项任务时,我想将其从 MongoDB 数据库中清除。
这是我的架构的代码。
const user = new mongoose.Schema({
username : String,
password : String,
task : [{
text : String,
day : String,
reminder : Boolean,
]}
})
For example,如果 Daryl 完成 text : "Gym" & day : "Feb 4th 5.30pm",我只想从 Daryl 的任务数组中删除 task[0]。
这是我使用 Mongoose 进行的尝试,
app.delete("/tasks", (req,res) => {
User.findOne( {_id : req.user.id}).then((target) => {
target.task.remove({text : req.body.text, day : req.body.day})
})
})
- User.findOne({_id : req.user.id}) 只针对登录的人
- 定位后,使用 .task 访问任务数组
- 并使用 .remove 和过滤器,从数组中删除该条目
我有 console.logged() 所有变量,它与数据字段一致,但是条目没有被删除。我做错了什么?
【问题讨论】:
-
您是否尝试在删除信息后保存更新的用户文档?
-
我已经尝试在 target.task.remove() 之后添加 target.save() / target.task.save(),也没有任何变化。也尝试将 target.task.remove 更改为 target.task.pull
-
也许试试这个。
User.updateOne( {_id : req.user.id }, { $pullAll: { text: req.body.text, day: req.body.day } } ) -
仍然没有变化,但感谢您的帮助!
-
在使用 save() 或 updateOne() 方法时是否收到任何错误消息?可能给
updateOne()这样的方法加上回调,console.log(err)看看有没有问题。User.updateOne({ _id: req.user.id }, { $pullAll: { text: req.body.text, day: req.body.day } }, function(err, res) { console.log(err); console.log(res); });
标签: javascript arrays express mongoose