2016-10-11 4 views
0

私は新しいユーザを登録しています。しかし、それは「ユーザーがすでに提供されています」と表示すべてのユーザーsails.jsを使用してdbで利用可能なユーザを確認してください

signup: function (req, res) { 
     var username = req.param("username"); 
     var password = req.param("password"); 
     var status = false; 
     console.log("user : " + username + " : " + password); 
     Signup.find({username: username}).exec(function(err, usr){ 
      if (err) { 
       var response = {status:status, error:"db error"}; 
       res.send(500, response); 
      } else { 
       if (usr) { 
       status = true; 
       res.send(400, {error: "Username already Taken"}); 
       } 
       else { 
       signup.create({username: username, password: password}).exec(function(error, user) { 
       if (error) { 
        res.send(500, {error: "DB Error"}); 
       } else { 
        req.session.user = user; 
        res.send(user); 
       } 
      }); 
     }} 
    }); 
    }, 
+0

エラーが発生した場合は、挿入してエラーをキャッチしてください。ルックアップを実行した後にインサートを実行すると、タイミングウィンドウの問題が発生しやすくなり、効率も2倍になります。 – EJP

答えて

0
Signup.find({username: username}).exec(function(err, usr){ 
    // usr is an array 
}); 

を見つけるの結果は、クエリに一致するオブジェクトとのリストです。リストにはアイテムがあるか、アイテムがありません。どちらの場合も、基本的には、usrが常に定義されているかどうかをチェックするだけなので、

if (usr) {} 

が真となります。変更するには

if (usr.length === 0) { 
    // already exists 
} 

またはfindをfindOneに変更します。

0

あなたのモデルでは、ユーザー名が一意でなければならないことが明らかです。したがって、findOne()機能を使用してください。 1つのレコード(オブジェクト)を返します。

signup: function(req, res) { 
    var username = req.param("username"); 
    var password = req.param("password"); 
    var status = false; 

    Signup.findOne({ username: username }) 
     .exec(function(err, usr) { 
      if (err) { 
       var response = { status: status, error: "db error" }; 
       return res.send(500, response); 
      } 
      if (usr) { 
       //status = true; --> in this case you don't use 'status' so this assignment is unnecessary 
       return res.send(400, { error: "Username already Taken" }); 
      } else { 
       Signup.create({ username: username, password: password }) 
        .exec(function(err, user) { 
         if (err) { 
          res.send(500, { error: "DB Error" }); 
         } else { 
          req.session.user = user; 
          res.send(user.username); 
         } 
        }); 
      } 
     }); 
} 
関連する問題