2 回答
TA贡献1831条经验 获得超4个赞
您可以为此使用 async/await。
user = await User.findById(req.user._id);
user.todos[user.todos.findIndex(i=>i._id==="todos id")].complated = true;
user.save();
或者
User.findById(req.user._id, function(err, user) {
if (err) {
console.log(err);
} else {
user.todos.forEach(function(todo,index) {
if (todo._id === req.params.todoId) {
user.todos[index].completed = true;
}
User.updateOne({_id:req.user._id},user).exec();
}
});
TA贡献1810条经验 获得超4个赞
在 的情况下User.findById(),不足以改变todo.completed值。你也必须保存它。例如:
User.findById(req.user._id)
.then(user => {
user.todos.forEach(function(todo) {
if (todo._id === req.params.todoId) {
todo.completed = !todo.completed;
}
})
return user.save();
})
.then(result => {
res.json(result);
})
.catch(function(err) {
res.send(err);
})
添加回答
举报