好的,我放弃了。
我尝试过很多东西来创建一个简单的登录表单。表单本身呈现正常,只是处理POST数据是错误的: - )
我有一个带有一些键的Redis数据库。首先,有users
集合,其中包含用户列表(目前只有用户:admin)。其次,只有密码的h user:admin
。请参阅下面的屏幕。
使用以下代码,当我提交表单时,它不会进入redis'调用的回调函数:
var username = req.body.username;
var password = req.body.password;
// Now, check if the user he entered exists
client.sismember(['users', 'user:' + username], function(err, reply) {
// IT NEVER GETS THERE
if (reply) {
// If he does, check if the password matches
client.hget(['user:' + username, 'password'], function(err, reply) {
if (reply === password) {
// If the password matches, add the session and redirects to home
req.session.username = username;
res.redirect('/home');
}
else {
options.error = "Password do not match.";
res.render('guest', options);
}
});
}
else {
options.error = "Username does not exist.";
res.render('guest', options);
}
});
我已经使用console.log检查了一些内容,username
和password
已经填好了。
关于redis服务器连接没有任何错误(如果我关闭服务器,我就没有错误),所以问题不存在。
我尝试过使用client.send_command(),但没有改变。
非常感谢任何帮助!
答案 0 :(得分:5)
好的,答案非常愚蠢。我的意思是,我没有看到这个是愚蠢的。
这种异步性质使得完全变得非常困难!
问题是,稍后,在代码中,最后,我关闭了与client.end()
的redis连接。
但是在回调被触发之前调用了这个函数,即使它在代码之后很好。