我需要保存到数据库之前验证用户名(如果提供了一个)和电子邮件(如果提供了一个)。我使用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'这样的东西来表明一个错误的请求? –
我的API返回200的所有响应以及错误的详细信息。我的应用程序将返回400s到客户端。 – tommyd456
可能与'$或'结合这两个查询条件如我的答案可能很简单... – zangw