Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 Node.js中是否可以嵌套Redis语句?_Javascript_Node.js_Redis_Node Redis_Nosql - Fatal编程技术网

Javascript Node.js中是否可以嵌套Redis语句?

Javascript Node.js中是否可以嵌套Redis语句?,javascript,node.js,redis,node-redis,nosql,Javascript,Node.js,Redis,Node Redis,Nosql,下面的代码包含一个嵌套的redis语句 var objList =new Array(); //Hardcoded key client.LRANGE("user4feed","0","-1",function(err,user){ user.forEach(function (reply, i) { //console.log(" " + i + ": " + reply); cli

下面的代码包含一个嵌套的redis语句

   var objList =new Array(); 

    //Hardcoded key
    client.LRANGE("user4feed","0","-1",function(err,user){
        user.forEach(function (reply, i) {
                    //console.log("    " + i + ": " + reply);
            client.HGETALL('photo:'+reply,function(err,user){
                var test = user;    //Cant go array directly, will say 'user' is undefined
                objList.push(test);
            })
        });
       console.log("List length = "+user.length);
    })

console.log("objList= "+objList); //This is never reached
但是,永远不会到达最后一个控制台日志语句。它几乎就像是在一个无限循环中

你知道怎么摆脱这一切吗


谢谢

您的最终控制台日志不在redis呼叫范围内。因此,当NodeJS异步调用redis
LRANGE
时,会立即调用它。将它放在
LRANGE
回调中。

您是否使用了
async
或promises之类的库?只是简单观察一下,但您最好使用client.EVAL,并返回JSON或平面数组/列表。节省了大量服务器往返+等待。不,对于这个简单的示例,我不使用任何库。虽然在我的主应用程序中,我使用的是express.js。但最后是否还有其他方法可以到达控制台日志语句?现在,似乎我无法将redis代码与普通代码混合使用……从redis docs for LRANGE:>如果开始大于列表的结尾,则返回一个空列表。
user
对您来说是什么样子?