Node.js&;Redis:前一个Redis请求中的另一个Redis请求';让我们回电话
我希望有一些经验丰富的Redis开发人员可以向我解释这背后的逻辑 我有一个集合作为钥匙,我能够用这个代码拉动集合中存储的所有对象Node.js&;Redis:前一个Redis请求中的另一个Redis请求';让我们回电话,node.js,redis,Node.js,Redis,我希望有一些经验丰富的Redis开发人员可以向我解释这背后的逻辑 我有一个集合作为钥匙,我能够用这个代码拉动集合中存储的所有对象 redisClient.smembers("student_list", function(err,result){ if(err) console.log(err); else { list = result; console.log(result);
redisClient.smembers("student_list", function(err,result){
if(err)
console.log(err);
else {
list = result;
console.log(result);
}
});
这很好,但是这个集合包含学生的id,在另一个redis db中,我用学生的信息(JSON字符串)映射了id。但是,当我在console.log(result)之后放入一个函数时,它不会运行第二个Redis查询,该查询会获取所有学生的信息。我写得像
for(var i = 0; i < list.length; i++){
console.log(i);
redisClient.get(list[i],function(err,student){
if(err)
console.log("An error occured: "+err);
else
console.log(JSON.parse(student));
});
}
PS2:完整代码,以防万一
redisClient.smembers("student_list", function(err,result){
if(err)
console.log("Err: " + err);
else {
list = result;
console.log(result);
for(var i = 0; i < list.length; i++){
console.log(i);
redisClient.get(list[i],function(err,student){
if(err)
console.log("An error occured: "+err);
else
console.log(JSON.parse(student));
});
}
}
});
redisClient.smembers(“学生列表”,函数(err,result){
如果(错误)
console.log(“Err:+Err”);
否则{
列表=结果;
控制台日志(结果);
对于(变量i=0;i
在“学生名单”的结果中是什么?您可以拥有多少嵌套回调是没有限制的,您想做的就是人们想做的。奇怪。在学生列表中发布完整代码?结果:['5072a3e59d745ba2a2000002','5072A3DC9D745BA2A200001']
在谷歌上搜索错误。看来redis2.6可能会解决这个问题(升级!)。另外,请听redisClient上的错误事件。@japrescott我在这里写作之前确实搜索过它。我下载了2.6(它安装了2.5.14,2.6的候选版本),但它仍然给我同样的错误。如果您有任何代码包含Redis中的嵌套函数,请与我们分享好吗?我没有可以分享的示例。但是结帐
redisClient.smembers("student_list", function(err,result){
if(err)
console.log("Err: " + err);
else {
list = result;
console.log(result);
for(var i = 0; i < list.length; i++){
console.log(i);
redisClient.get(list[i],function(err,student){
if(err)
console.log("An error occured: "+err);
else
console.log(JSON.parse(student));
});
}
}
});