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
});