2012-05-13 151 views
0

我有下面的代碼塊失敗:節點Redis的客戶端無法正常工作中使用方法「HMSET」

this.redisClient.hmset('user:' + userObj.getUserId(), { 
       'userId' : userObj.getUserId(), 
       'salutation' : userObj.getSalutation(), 
       'fn' : userObj.getFn(), 
       'mi' : userObj.getMi(), 
       'ln' : userObj.getLn(), 
       'suffix' : userObj.getSuffix(), 
       'userType' : userObj.getUserType(), 
       'created' : userObj.getCreated() 
      }); 

錯誤堆棧如下:

node.js:201 
    throw e; // process.nextTick error, or 'error' event on first tick 
     ^
TypeError: Cannot call method 'hmset' of undefined 
at /node_apps/oc/api/v1/routes/user/db.user.js:70:34 
at try_callback (/node_apps/oc/api/v1/node_modules/redis/index.js:484:9) 
at RedisClient.return_reply (/node_apps/oc/api/v1/node_modules/redis/index.js:555:13) 
at HiredisReplyParser.<anonymous> (/node_apps/oc/api/v1/node_modules/redis/index.js:256:14) 
at HiredisReplyParser.emit (events.js:67:17) 
at HiredisReplyParser.execute (/node_apps/oc/api/v1/node_modules/redis/lib/parser/hiredis.js:43:18) 
at RedisClient.on_data (/node_apps/oc/api/v1/node_modules/redis/index.js:440:27) 
at Socket.<anonymous> (/node_apps/oc/api/v1/node_modules/redis/index.js:70:14) 
at Socket.emit (events.js:67:17) 
at TCP.onread (net.js:329:14) 

我運行節點0.6.17使用Node Redis客戶端。任何見解?謝謝!

回答

1

如果Node認爲您在undefined上打電話hmset,那意味着它認爲this.redisClient是未定義的;通常情況下,這是因爲this的值不是您認爲的值(儘管可能是redisClient未初始化等)。如果沒有看到周圍的代碼以及它的調用方式是不可能的,請檢查以確保this的值必要時被綁定。

+1

布蘭登,你絕對正確。儘管我爲RedisClient設置了setter/getter,但我無法訪問this.redisClient,直到我在addUser方法中添加了var self = this作爲第一行。這個實現現在產生self._redisClient.hmset(...);謝謝! – Chris