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

How to retrieve Redis values into a array in NodeJs

我想从我的 redis 中获取所有值并将其存储到 nodejs 中的数组中

这是我现在的代码,

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

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

假设您需要数组中的 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
});

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