我有一个现有的键值列表: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
包。
答案 0 :(得分:7)
对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
});