Promisify Redis客户端

mub*_*een 2 javascript redis node.js 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)
    });
});
Run Code Online (Sandbox Code Playgroud)

但它回应错误:

client.lrange(...).然后不是一个函数

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

rob*_*lep 10

使用时promisifyAll,promisified方法得到一个-Async后缀:

client.lrangeAsync('abc',0,3).then(...);
Run Code Online (Sandbox Code Playgroud)

根据文件:

请注意,对象上的原始方法不会被覆盖,但会使用Async-suffix 创建新方法.例如,如果promisifyAllnode.js fs对象用于fs.statAsync调用promisified stat方法.

  • [__`Promise.promisifyAll`__](http://bluebirdjs.com/docs/api/promise.promisifyall.html)本身有`redis`的例子,我很惊讶OP无法想出来...... +1 (3认同)