使用sails.js检查db中已有的用户

时间:2016-10-11 07:44:23

标签: mysql sails.js

我正在通过检查新用户是否已注册来注册。但是对于它显示的每个用户而言,#34;用户已经可用"

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);
                }
            });
        }}
    });
  }, 

2 个答案:

答案 0 :(得分:0)

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

find的结果是一个包含与您的查询匹配的对象的列表。列表要么有项目,要么没有项目。在这两种情况下

if (usr) {}

将是真的,因为你基本上只是检查是否定义了usr。所以把它改成

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

或者您将find更改为findOne。

答案 1 :(得分:0)

我认为在你的模型中,它清楚地表明用户名必须是唯一的。所以使用findOne()函数。它只返回一条记录(对象)。

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);
                        }
                    });
            }
        });
}