2012-05-13 9 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

hmsetundefinedと呼んでいるとNodeが判断した場合は、this.redisClientは未定義とみなされます。これは、thisの値があなたの考えではないからです(ただしredisClientは初期化されていないなど)。周囲のコードとそれが呼び出される方法を見ずに言うことは不可能ですが、必要に応じてthisの値がバインドされていることを確認してください。

+1

ブランドン、本当に正しいです。私はRedisClientのsetter/getterを持っていますが、addUserメソッドの最初の行にvar self = thisを追加するまでthis.redisClientにアクセスすることはできませんでした。この実装では、self._redisClient.hmset(...)が生成されます。ありがとう! – Chris

関連する問題