-2

hgetブロック内のnode.jsでhdelコマンドを実行しようとしています。コードは次のとおりです。

client.hget(requests[i], "client", function(err, client){
if(isUser == true){
    client.hdel(requests[i], function(err){
          if(err){
                 console.log("cannot process request");
              }
     });
    }
});

それは機能しておらず、理由がわかりません!どんな助けでも大歓迎です。

4

1 に答える 1

0

requests [i]をパラメーターとして使用するため、このコードブロックはループにカプセル化されていると想定できます。おそらく、配列を反復処理して、各アイテムに対してhget/hdelを実行しようとしています。

その場合、Javascriptのスコープルールに見舞われた可能性があります。requests[i]はクロージャの一部ですが、クロージャは関数レベルでのみ定義できます(ブロックレベルでは定義できません)。

おそらく、内部関数を定義するか、forEachを使用してコンテナーを反復処理する必要があります。詳細はこちら:

nodejs、redis。キーが存在するかどうかを確認し、存在しない場合は新しいキーを作成します

forループの場合はredis遅延からアイテムを取得します

于 2012-11-01T08:27:44.600 に答える