У меня есть контроллер пользователя, в котором есть метод создания, который проверяет базу данных на уникальность электронной почты и имени пользователя перед созданием пользователя (это для обхода ошибки в mongodb adpater для SailsJS, который не учитывает флаг уникального атрибута — версия 0.10 .5).
Код выглядит следующим образом:
User.find({ email: req.body.email }, function (err, user) {
if(user) {
return res.badRequest('Unique email constraint. Email is already used.');
}
});
User.create(req.body).exec(function (err, user) {
// Code to catch and manage err or new user
}
Я ожидаю, что если электронное письмо уже существует в базе данных (mongodb), для отправки 400 с помощью res.badRequest(), а затем выполнение будет завершено.
Что происходит, так это то, что ответ отправляется, но затем управление переходит к User.create() - выполнение не заканчивается. Я подозреваю, что return res.badRequest возвращает управление вызывающей функции (User.findOne), и выполнение продолжается оттуда.
Я попытался использовать res.badRequest().end(), но это оставило клиент в зависании (ответа нет), а использование res.end() после возврата res.badRequest() сгенерировало ошибки «отправки заголовка».
Как завершить выполнение этого запроса, если найдено существующее электронное письмо?