我试图将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的参数数目不详......
有关可能导致此问题的任何见解?
答案 0 :(得分:0)
正如@Bergi在上面的评论中指出的那样,你需要在申请时传递正确的上下文。
client.set.apply( client, arguments );