fix sync of remove challenge task

This commit is contained in:
Matteo Pagliazzi
2016-01-06 12:16:41 +01:00
parent a5b1dfd32d
commit 3a6d7bd466
+4 -14
View File
@@ -174,24 +174,14 @@ schema.methods.updateTask = async function challengeUpdateTask (task) {
schema.methods.removeTask = async function challengeRemoveTask (task) {
let challenge = this;
// Remove the tasks from users' and map each of them to an update query to remove the task from tasksOrder
let updateQueries = (await Tasks.Task.findOneAndRemove({
// Set the task as broken
await Tasks.Task.update({
userId: {$exists: true},
'challenge.id': challenge.id,
'challenge.taskId': task._id,
}, {
fields: {userId: 1, type: 1}, // fetch only what's necessary
}).lean().exec())
.map(removedTask => {
return User.update({_id: removedTask.userId}, {
$pull: {[`tasksOrder${removedTask.type}s`]: removedTask._id},
});
});
// Execute each update sequentially
for (let query of updateQueries) {
await query.exec(); // eslint-disable-line babel/no-await-in-loop
}
$set: {'challenge.broken': 'TASK_DELETED'}, // TODO what about updatedAt?
}).lean().exec();
};
export let model = mongoose.model('Challenge', schema);