【问题标题】:Express, node.js and redis: Separated function to access dataExpress、node.js 和 redis:访问数据的分离函数
【发布时间】:2012-08-21 02:44:40
【问题描述】:

我正在尝试创建一个文件“users.js”,其中 id 喜欢管理对用户数据的所有 redis 访问。在这个文件中,我有下一个功能,我将用户保存在一个列表中,然后从他们的键中加载所有用户:

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”,我尝试在其中管理管理面板的路由。在这个文件中,我需要 users.js 文件,并调用 users.getUsers() 函数。我希望得到一个包含用户对象的数组,或者至少是包含所有这些对象的字符串。问题是它总是返回“未定义”。

据我了解,发生的事情是我尝试在 mget 完成回调之前返回 usrs 变量。但我不知道如何解决。

问题是......我怎样才能让return语句等待mget?有没有其他方法来组织代码并保持数据库访问由字段分隔?

【问题讨论】:

    标签: node.js express redis


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-18
      • 2021-12-12
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多