我正在尝试更新存储在特定用户的待办事项数组中的待办事项数组中的单个“待办事项”项目。一个典型的用户可能看起来像这样:
{ isAdmin: false,
_id: 5cefe9b72efc1c19a0318233,
username: 'a',
email: 'aaaaa@gmail.com',
todos:
[ { day: 'Monday',
completed: false,
_id: 5cf10e7fba969c4be4d356db,
name: 'asdf',
createdDate: 2019-05-31T11:22:39.423Z,
__v: 0 },
{ day: 'Monday',
completed: false,
_id: 5cf10e8bba969c4be4d356dc,
name: 'pp',
createdDate: 2019-05-31T11:22:51.248Z,
__v: 0 }],
__v: 12 }
当用户创建一个 todo 时,这个 todo 是用另一个 Todo 模型创建的,并被推送到用户的 todos 数组中。起初,我尝试简单地查找和更新单个待办事项:
db.Todo.findOneAndUpdate({_id: req.params.todoId}, req.body, {new: true})
.then(function(updatedTodo) {
res.json(updatedTodo);
})
.catch(function(err) {
res.send(err);
})
...它似乎更新了 Todos 集合中的 todo,但它不会更新嵌套在用户“todos”数组中的 todo。所以,我想我会首先找到用户并更新特定待办事项的 id,如下所示:
User.findById(req.user._id, function(err, user) {
if (err) {
console.log(err);
} else {
user.todos.forEach(function(todo) {
if (todo._id == req.params.todoId) {
todo.completed = !todo.completed;
}
}
});
...但同样,它似乎并没有真正更新嵌套在用户的“todos”数组中的待办事项。我在这里有点迷茫,不知道该去哪里。任何帮助将不胜感激。
慕容708150
慕莱坞森
相关分类