2017-11-19 3 views
0
const redis = require('redis'); 
var client = redis.createClient(); 

client.on('error', function(err){ 
    console.log('Something went wrong ', err) 
}); 


var getResponse = (key, field) =>{ 
client.hget(key,field, function(err,reply){ 
    if(!err) return reply; 
    else { 
    console.log(err); 
    } 
    }); 
}; 

var s = getResponse("employee","b"); 
console.log(s); 

Also, wenn der Ausgang undefined zeigt. Was mache ich falsch? Wie speichert man den Rückgabewert auf s?Speichern redis hget Werte in eine Variable in NodeJS

Antwort

0

können Sie Rückrufe wie verwenden:

var getResponse = (key, field, success, error) =>{ 
    client.hget(key,field, function(err,reply){ 
     if(!err) { 
      success(reply); 
     } 
     else { 
      error(err); 
     } 
    }); 
}; 

getResponse("employee","b",function success(reply){ 
    //here you get the reply 
}, function error(err) { 
     //error 
}); 

Wenn Sie Knoten Version 6 oder höher verwenden Sie versprechen oder Asynchron erwarten können. Sie können mehr Details auf dem folgenden Link finden: http://exploringjs.com/es6/ch_promises.html

+0

Ich denke, meine Abfrage will klar genug. In meinem ursprünglichen Code, wenn Konsole verwenden, log (Antwort); anstelle von zurück antworten gibt es eine ordnungsgemäße Ausgabe. Ich möchte diese Ausgabe in eine Variable speichern. Wie mache ich das? Gibt es einen Datentyp, der nicht übereinstimmt? – Lakshya

+0

Wenn Sie den Antwortwert in einer Variablen speichern und danach manipulieren möchten, sollten Sie dies im Erfolgsrückruf tun. Der Erfolgsrückruf ist der Ort, an dem Sie sicher sein können, dass Sie den Wert erhalten. (asynchrones Verhalten) – Elka

+0

Danke. Es hat wie ein Zauber funktioniert. – Lakshya