Мне нужно подтвердить имя пользователя (если оно указано) и электронное письмо (если оно предусмотрено) перед сохранением в db. Я использую MongooseJS, однако, я не уверен, как структурировать кодПроверка подлинности электронной почты и имени пользователя в чистом стиле
Вот то, что я до сих пор:
var user = new User();
if(req.body.email) {
User.findOne({"email" : req.body.email}, function(err, found){
if(err) return next(err);
if(found) return res.status(200).send({"error_code" : "INVALID_REQUEST_ERROR", "message" : "Email address already exists"});
});
}
if(req.body.username) {
User.findOne({"username" : req.body.username}, function(err, found){
if(err) return next(err);
if(found) return res.status(200).send({"error_code" : "INVALID_REQUEST_ERROR", "message" : "Username already exists"});
});
}
user.save(function(err){
if(err) return next(err);
res.status(200).send(user);
});
, но, конечно, это не будет работать, как user.save
будет выполняется до того, как выполняется один из блоков проверки. Я понимаю, что я мог бы поставить user.save
внутри обратных вызовов, но тогда я бы повторил код, который я хочу избежать.
Немного о теме, но почему вы используете [код состояния] (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_Success) '200' для отправки сообщения об ошибке? Разве это не значит, что «400» означает «плохой запрос»? –
My API возвращает 200 для всех ответов плюс сведения об ошибке. Мое приложение вернет 400s клиенту. – tommyd456
может объединить эти два условия запроса с '$ или', поскольку мой ответ показал, что может быть проще ... – zangw