redis.lindex() возвращает значение true, а не значение в индексе

У меня есть существующий список значений ключей: key value1 value2,

В redis-cli, Я бегу LRANGE key 0 -1, который возвращает:

1) value1
2) value2

Это подтверждает, что список значений ключей существует. В redis-cli, Бег LINDEX key 0 возвращает:

"value1"

Тем не менее, в моем приложении узла, когда я выполняю console.log(redis.lindex('key', 0))печатает true а не значение в индексе.

Что я делаю неправильно?

Примечание: я использую node-redis пакет.

1 ответ

Решение

Вызовы командных функций в node-redis являются асинхронными, поэтому они возвращают свои результаты в обратном вызове, а не напрямую из вызова функции. Ваш звонок в lindex должен выглядеть так:

redis.lindex('key', 0, function(err, result) {
    if (err) {
        /* handle error */
    } else {
        console.log(result);
    }
});

Если вам нужно "вернуть" результат из любой функции, в которой вы находитесь, вам придется сделать это с помощью обратного вызова. Что-то вроде этого:

function callLIndex(callback) {
    /* ... do stuff ... */

    redis.lindex('key', 0, function(err, result) {
        // If you need to process the result before "returning" it, do that here

        // Pass the result on to your callback
        callback(err, result)
    });
}

Который вы бы назвали так:

callLIndex(function(err, result) {
    // Use result here
});
Другие вопросы по тегам