Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何制作redis+;node.js代码更容易阅读?_Javascript_Node.js_Callback_Redis - Fatal编程技术网

Javascript 如何制作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

我想使用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, 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包含了真实的代码而不是示例。=;)-我把“这是我现在正在做的事情的示例代码”作为他的代码示例来读:=)