Я создаю простое приложение Express, точнее, приложение todo. Он работает нормально, я могу создать задачу, удалить, обновить и т. Д. c. Проблема в том, что когда я создаю уже существующего пользователя, приложение вылетает, выдавая мне эту ошибку:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Как вы можете видеть из приведенного ниже кода, когда функция create обнаруживает подобное, я сделал это так что он возвращает сообщение о том, что задача уже существует. Но вместо сообщения я получаю сообщение об ошибке. Это функция создания:
exports.createTask = function (req, res) {
const { text, createdDateAndTime, creator } = req.body;
Task.findOne({ text })
.exec((err, task) => {
if (task) {
return res.status(400).json({
message: 'Task exists already'
});
}
});
let newTask = new Task({ text, createdDateAndTime, creator });
newTask.save((err, newTask) => {
if (err) {
return res.status(400).json({
message: `Task wasn't saved beacause: ${err}`
});
}
res.json({
message: `Task ${newTask.text} created successfuly`,
})
});
};
Я предполагаю, что после нахождения подобного todo он отправляет ответ обратно в браузер, а затем продолжает выполнять остальные функции, следовательно, ошибка. Так что, если это так, как я могу сделать так, чтобы я не получил эту ошибку, или как я могу остановить функцию, когда она обнаружит аналогичного пользователя и вернет соответствующее сообщение?