Express,node.js和redis:分离函数来访问数据

我试图创build一个文件'users.js'在哪里id喜欢pipe理所有的redis访问用户数据。 在这个文件中,我有下一个function,在那里我得到的用户保存在列表中,然后加载他们的所有钥匙:

exports.getUsers = function(){ var usrs; client.lrange('users', 0, -1, function(err, rep){ client.mget(rep, function(e,r){ usrs = r; }); }); return usrs; }; 

我有另一个文件“admin.js”,我尝试pipe理我的pipe理面板的路线。 在这个文件中我需要users.js文件,并且我调用了users.getUsers()函数。 我期望得到一个用户对象的数组,或者至less是所有的string。 问题是它总是返回“未定义”。

据我了解,发生了什么事情是,我试图在callback之前mget完成之前返回usrsvariables。 但我不知道如何解决这个问题。

问题是…我如何使返回语句等待mget? 有没有其他的方式来组织代码,并保持数据库访问由字段分隔?

你不能让getUsers在返回之前等待响应,所以你需要让你的函数支持你的函数在数据准备就绪时调用的一个callback参数:

 exports.getUsers = function(callback){ client.lrange('users', 0, -1, function(err, rep){ client.mget(rep, function(e,usrs){ callback(e,usrs); }); }); };