如何在NodeJs中将Redis值检索到数组中

时间:2017-02-01 11:02:59

标签: javascript node.js redis node-redis

我想从redis中获取所有值并将其存储在nodejs

中的数组中

这是我现在的代码,

redisClient.keys("Serial*", function (err, keys) {
    keys.forEach(function (key, i) {
        redisClient.hgetall(key, function (err, currencyData) {
            console.log(currencyData);
        })
    });
});

它允许我将所有值输出到控制台 但我需要使用这些值

1 个答案:

答案 0 :(得分:1)

假设您需要数组中的currencyData -

function getAllCurrency(callback){
    redisClient.keys("Serial*", function (err, keys) {
        var allCurrencyData = [];
        var counter = keys.length;
        keys.forEach(function (key, i) {
            redisClient.hgetall(key, function (err, currencyData) {
                if(err)
                    return callback(err);
                console.log(currencyData);
                allCurrencyData.push(currencyData);
                counter--;
                if(counter == 0)
                   callback(null, allCurrencyData);
            })
        });
    });
}

从另一个函数调用 -

getAllCurrency(function(err, allCurrency){
    // use allCurrency array here
});

这不是最好的代码。此外,数组中元素的顺序可能与keys数组不同。要获得更好的异步控制,请尝试使用async库或Promises。