我需要保存到數據庫之前驗證用戶名(如果提供了一個)和電子郵件(如果提供了一個)。我使用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