我是帆船的新手,我正在制作一个简单的登录功能,其中名为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"
如果我误会,请告诉我。
答案 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')
};
});