#node.js #redis #serverside-javascript
#node.js #redis #серверная часть-javascript
Вопрос:
У меня есть следующий код
var redis = require("redis"),
client = redis.createClient();
var getuser = function(username) {
var userhash={};
client.hgetall("users." username, function(err, user) {
userhash=user;
});
return userhash;
};
user_rahul = {
username: 'rahul',
queueno: 1,
sessionId: '6604353811126202'
};
user_namita = {
username: 'namita',
sessionId:'2'
};
client.hmset('users.rahul', user_rahul);
client.hmset('users.namita', user_namita);
var username = "rahul"; // From a POST perhaps
var user1=getuser(username);
console.log(user1);
client.hgetall("users." username, function(err, user) {
console.log(user);
});
я создал функцию getuser для возврата значения определенного имени пользователя в userhash, но она не возвращает, пожалуйста, помогите выяснить, почему она не возвращается.
что я должен сделать, чтобы вернуть значение?
Ответ №1:
Вы смешиваете шаблоны синхронизации и асинхронности при выполнении асинхронного вызова в вашей функции sync getUser. Вам нужно сделать вашу функцию getUser асинхронной, например:
var redis = require("redis"),
client = redis.createClient();
var getuser = function(username, cb) {
client.hgetall("users." username, cb);
};
user_rahul = {
username: 'rahul',
queueno: 1,
sessionId: '6604353811126202'
};
user_namita = {
username: 'namita',
sessionId:'2'
};
client.hmset('users.rahul', user_rahul);
client.hmset('users.namita', user_namita);
var username = "rahul"; // From a POST perhaps
getuser(username, function(err, res){
console.log(res);
});
client.hgetall("users." username, function(err, user) {
console.log(user);
});