Javascript Node.js中是否可以嵌套Redis语句?
下面的代码包含一个嵌套的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
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
对您来说是什么样子?