Javascript 如何制作redis+;node.js代码更容易阅读?
我想使用redis和node.js来验证我网站的用户登录数据 下面是我现在所做工作的示例代码Javascript 如何制作redis+;node.js代码更容易阅读?,javascript,node.js,callback,redis,Javascript,Node.js,Callback,Redis,我想使用redis和node.js来验证我网站的用户登录数据 下面是我现在所做工作的示例代码 var redis = require('redis'); var client = redis.createClient(); var userID = 'aaa'; var password = '123456'; client.sadd('userIDs', userID, redis.print); client.hset('id2password', userID, password, r
var redis = require('redis');
var client = redis.createClient();
var userID = 'aaa';
var password = '123456';
client.sadd('userIDs', userID, redis.print);
client.hset('id2password', userID, password, redis.print);
client.sismember('userIDs', userID, function(err, result) {
if(err) {
console.log('Error: ' + err);
return;
}
if(result == 1) {
client.hget('id2password', userID, function(err, result) {
if(err) {
console.log('Error: ' + err);
return;
}
if(result == password) {
console.log('All data are correct.');
} else {
console.log('Wrong password.');
}
});
} else {
console.log(userID + ' doesn\'t exist.');
}
});
对我来说,这段代码很难阅读。因为在“if”语句之后我想做的所有事情都包装在回调函数中。我怎样才能使它更容易阅读
我希望我的代码可以像这样重写
var redis = require('redis');
var client = redis.createClient();
var userID = 'aaa';
var password = '123456';
client.sadd('userIDs', userID, redis.print);
client.hset('id2password', userID, password, redis.print);
if(mySismember('userIDs', userID)) {
if(myHget('id2password', userID) == password) {
console.log('All data are correct.');
} else {
console.log('Wrong password.');
}
} else {
console.log(userID + ' doesn\'t exist.');
}
有可能实现这个目标吗
我知道redis中的命令是异步执行的。在这种情况下,使用回调函数似乎是不可避免的。您应该看看承诺。看到了吗?这是一个codereview.stackexchange问题吗?@bitoiu在它的当前状态下,我认为在堆栈溢出的情况下,这里更好。OP有一个特定的目标,即期望的结果应该是怎样的,代码应该是怎样的,并且想要知道这是否是可以实现的。@bitoiu,前提是OP包含了真实的代码而不是示例。=;)-我把“这是我现在正在做的事情的示例代码”作为他的代码示例来读:=)