节点redis不喜欢function.apply()

时间:2016-04-20 14:59:53

标签: javascript node.js redis apply

我试图将redis客户端包装在节点中,但我似乎遇到了使用.apply()调用node-redis函数的一些问题。 当我尝试这样做时,这会导致问题,我可以解决这个问题,但现在async正在使用.apply()来调用它的函数,这现在会导致问题。

以下是我正在做的事情的简化:

var client = redis.createClient( myOptions );
function set(){
  // do other stuff
  client.set.apply( null, arguments );
}

然而,当我这样做时,我收到以下错误:

TypeError: Cannot read property 'send_command' of null
    at RedisClient.(anonymous function).RedisClient.(anonymous function) (E:\sitesroot\0\node_modules\redis\lib\commands.js:45:24)

当我像这样手动传递参数时,代码工作正常:

function set( key, value ){
  // do stuff
  client.set( key, value );
}

这种方法对于包含hgetall的东西不起作用,而hgetall的参数数目不详......

有关可能导致此问题的任何见解?

1 个答案:

答案 0 :(得分:0)

正如@Bergi在上面的评论中指出的那样,你需要在申请时传递正确的上下文。

client.set.apply( client, arguments );