2016-09-12 8 views
1

이것은 redis cilent 및 node j가있는 날의 첫 번째 날입니다.redis 클라이언트 및 노드 js-hgetall 메소드가 빈 결과와 함께 실패합니다.

나는 내가 레디 스-cli를 Node.js를로를 통해 실행이 명령을 복제하기 위해 노력하고있어 :

client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) { 
     console.log(err); 
     replies.forEach(function (reply,i) { 
       console.log(' ' + i + ':' + reply); 
     }); 
}); 

그것은 다시 널 (null) 제공 한 후 : 여기

127.0.0.1:6379> HGETALL widgets:9145090003_00:00_00:00 
1) "id" 
2) "33305" 
3) "loc" 
4) "jamaica" 
5) "days" 
6) "" 

는 nodejs 코드입니다 foreach를 시도하는 동안 실패합니다.

client.hgetall("widgets", function (err, replies) { 
      console.log(err); 
      replies.forEach(function (reply,i) { 
        console.log(' ' + i + ':' + reply); 
      }); 
    }); 

를하지만 같은 결과를 얻을 :

나는 또한 시도했다.

내가 잘못하고 있는지 확실하지 않습니다. 결과이다

17 console.log("attempting to do hgetall.."); 
18 client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) { 
19   //for (let k in replies) console.log(' ${k}:${replies[k]}'); 
20   console.log(replies.id); 
21 }); 

그리고 여기 :

EDIT 1

나는이 코드를 시도

/var/www/html/node/test/models/Widgets.js:20 
    console.log(replies.id); 
        ^

TypeError: Cannot read property 'id' of null 

그리고 아직 CLI에서 나는이 작업을 수행 할 수 있습니다

127.0.0.1:6379> HGET widgets:9145090003_00:00_00:00 id 
"33305" 
127.0.0.1:6379> HGETALL widgets:9145090003_00:00_00:00 
1) "id" 
2) "33305" 
3) "loc" 
4) "jamaica" 
5) "days" 
6) "" 
127.0.0.1:6379> 

답변

1

hgetall의 응답이 Object 형식이며, 코드

console.log(replies.id); 

에 다음 줄을 추가 시도하고 당신은 당신의 콘솔에서 33305을 인쇄합니다.

+0

으로 변환되는 해시가 반환됩니다. 그러면 오류가 반환됩니다. 편집 1 – Happydevdays

+0

console.log (응답)가 인쇄하는 내용을 참조하십시오. – marvel308

+0

은 null을 반환합니다. – Happydevdays

0

나는 당신이하고 있던 일을 반복하려했습니다. 먼저 올바른 redis 인스턴스에 연결하는지 확인합니다. 그렇다면 forEach 함수는 배열에서 작동하지만 여기서는 응답이 Object이고 Object.prototype.forEach 함수가 없습니다. 응답을 다르게 반복해야합니다. 나는 당신이 redis의 올바른 인스턴스에 연결되어있을 때 작동하는 방식으로 코드를 다시 작성했습니다.

client.hgetall("widgets:9145090003_00:00_00:00", function (err, replies) { 
     console.log(replies); 
     for(let k in replies) { 
      console.log(` ${k}:${replies[k]}`); 
     } 
}); 
+0

여기서 redis 클라이언트의 특정 메서드가 개체를 반환하는지 확인해야합니까? 나 자신을 도울 미래의 참조를 요구합니다. 이것은 내가 사용해온 참조입니다 ... 매우 제한적입니다 : https://www.npmjs.com/package/redis – Happydevdays

+0

및 btw, 나는이 코드를 시도했지만 아무것도 반환하지 않습니다. 오류는 없지만 아무것도 인쇄하지 않습니다. – Happydevdays

+0

제대로 연결되지 않은 것처럼 보입니다. 나는 당신이 [진행하기 전에] (https://github.com/NodeRedis/node_redis#rediscreateclient)를 읽어야한다고 생각하는데, redis 인스턴스가 듣고있는 포트에 어떻게 연결하는지 알려줄 것이다. 함수가 무엇을 반환하는지 아는 것에 관해서는, 당신은 redis 자체에 대한 문서를 봐야한다고 생각합니다. hgetall을 호출 한 이후로 자바 스크립트 객체 인 –