2014-10-09 2 views
1

У меня есть существующий список ключевых значений: key value1 value2.redis.lindex() возвращает true, а не значение в индексе

В 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.

ответ

4

Вызов функций команды в 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 
}); 
+0

Так что я изменил код в точности то, что у вас есть выше. За исключением того, что я возвращаю 'result', а не записываю его, поскольку я вызываю функцию из другого файла. Он возвращает 'undefined'. Однако, когда я регистрирую его, а не возвращаю его, он записывается в порядке. Почему я могу зарегистрировать его, но не вернуть его? –

+0

Поскольку функция асинхронна, вы не можете «вернуть» ее. Что вам нужно сделать, это передать обратный вызов вашей функции, а затем вызвать этот обратный вызов из обратного вызова «redis.lindex». Я отредактирую свой ответ, чтобы показать пример этого. –

+0

Спасибо, это сработало! Я новичок в js. –

Смежные вопросы