在sails控制器中不匹配密码参数

时间:2014-05-30 20:20:47

标签: node.js sails.js sequelize.js

我是帆船的新手,我正在制作一个简单的登录功能,其中名为find的控制器将进入db并检查用户名密码是否有效,但我面临的问题是它的问题。检查用户名,我认为不是密码,因为在param中我传递了正确的密码,我正在通过简单地传递param,我通过param的链接是

http://localhost:1337/find/index?name=ahsan&pass=pakistan

我的find控制器中的代码是

var Sequelize = require('sequelize');
 var sequelize  = require('../../config/config_db').dbase;

    var user = sequelize.define('Data',{
      username: Sequelize.STRING,
      birthday: Sequelize.STRING
    })

sequelize.sync();

module.exports = {



  index: function (req, res) {        

  var n = req.param('name');
  var p = req.param('pass');


  user.find({ where: { username : n, password : p }    })
  .complete(function(err, name, pass)
  {
    if (!!err) 
      {
        return res.json('error while connecting db')
      }
    else if (!name) 
      {
        return res.json('no user with this name')
      }
    else if (!pass)
    {
      return res.json('no user with this password')
    }
    else
    {
      return res.json('user is valid')
    };


})

    // Send a JSON response
    // return res.json({
    //   hello: 'world'

  },

  _config: {}


};

并且在控制台中执行的查询是

SELECT * FROM `Data` WHERE `Data`.`username`='ahsan' AND `Data`.`password`='pakistan' LIMIT1;

密码巴基斯坦存在于我的数据库中,而它显示的是

"no user with this password"
如果我误会,请告诉我。

1 个答案:

答案 0 :(得分:1)

你在Sequelize中滥用.complete()回调。它应该有两个参数:err和检索到的项目(在这种情况下是用户)。尝试:

user.find({ where: { username : n, password : p }    })
  .complete(function(err, user)
  {
    if (!!err) 
      {
        return res.json('error while connecting db')
      }
    else if (!user.name) 
      {
        return res.json('no user with this name')
      }
    else if (!user.pass)
    {
      return res.json('no user with this password')
    }
    else
    {
      return res.json('user is valid')
    };       
});