【问题标题】:Get empty Array in first loading page在第一个加载页面中获取空数组
【发布时间】:2013-11-20 05:05:38
【问题描述】:

当我调用下面的函数并在我的 ejs 视图中显示数据时。服务器启动后第一次加载没有数据。但是可以从第二次加载中获取数据。服务器启动后第一次加载时只有空列表。这是什么问题?我正在使用 redis 作为数据库。我在使用 postgreSQL 并使用

解决问题时也遇到了同样的错误
client.on('end', function(){
   fn(_datas);
}. 

但现在不能使用该代码。

getAllDatas = function(fn){
    client.smembers('db:contact:all', function(err, _uid){
        if(err)
            throw err;
        else{
            for(var i = 0; i < _uid.length; i++){
                    client.hgetall('db:contact:' + _uid[i], function(err, reply){
                    if(err)
                        throw err;
                    else{
                        _datas.push(reply);
                    }
                }); 
            }
        }
    });
    fn(_datas);
    _datas = [];

};

【问题讨论】:

    标签: node.js redis node-redis


    【解决方案1】:

    我通过使用 setTimeout 函数解决了以下代码。我知道这不是很好的答案,但现在确实可以解决我的错误。

    getAllDatas = function(fn){
        var _datas = [];
        client.smembers('db:contact:all', function(err, _uid){
            if(err)
                throw err;
            else{
                for(var i = 0; i < _uid.length; i++){
                        client.hgetall('db:contact:' + _uid[i], function(err, reply){
                        if(err)
                            throw err;
                        else{
                            _datas.push(reply);
                        }
                    }); 
                }
            }
        });
        setTimeout(function(){
           fn(_datas);
        }, 100);
    
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 2013-04-29
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多