在第一个加载页面中获取空数组

时间:2013-11-20 05:05:38

标签: node.js redis node-redis

当我在下面调用函数并在我的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 = [];

};

1 个答案:

答案 0 :(得分:0)

我使用 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);

};