Promisify Redis客户端

时间:2016-09-21 11:31:25

标签: javascript node.js redis promise bluebird

我如何promisify redis以便我可以使用then

我试图宣传客户:

var redis = require('redis');
Promise.promisifyAll(redis.RedisClient.prototype);
var client  = redis.createClient();

client.on('connect', function(){
    console.log('Redis connection is up');

    client.lrange('abc',0,3).then(function(result){
        console.log(result);
        res.send(200)
    });
});

但它回应错误:

  

client.lrange(...)。然后不是函数

PS:回调代码运行正常,这意味着服务器运行正常。

1 个答案:

答案 0 :(得分:7)

使用-Async时,宣传的方法会获得client.lrangeAsync('abc',0,3).then(...); 后缀:

Async

根据the documentation

  

请注意,对象上的原始方法不会被覆盖,但会使用promisifyAll - 后缀创建新方法。例如,如果您fs node.js fs.statAsync对象使用stat来调用promisified {{1}}方法。