好的,我放弃了.
我已经尝试了很多东西来创建一个简单的登录表单.表单本身呈现正常,这只是POST数据的处理错误:-)
我有一个Redis数据库,里面有一些键.首先,有一个users
包含用户列表的集合(目前只有用户:admin).其次,有一个user:admin
只有密码的hkey .请参见下面的屏幕.
使用以下代码,当我提交表单时,它不会进入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(),但没有改变.
任何帮助将不胜感激 !
好的,答案非常愚蠢.我的意思是,我没有看到这个是愚蠢的.
这种异步性使得完全变得非常困难!
问题是,稍后,在代码中,最后,我关闭了redis连接client.end()
.
但是在回调可能被触发之前调用了这个函数,即使它在代码之后很好.