我有以下代码
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 中特定用户名的值,但它没有返回,请帮助找出它没有返回的原因。 我应该怎么做才能获得值(value)返回?
最佳答案
当您在同步 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);
});
关于node.js - 函数不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214861/