0

何かを保存したい memcached 状態があります。ノードがアプリケーションのトポロジに接続するとき、その種類の接続されたノードのリストにノードを追加したいと考えています。クエリをネストしてこれを実行しようとしています:

mc_cli.connect(function() {
mc_cli.get( key, function(err, response) {
    if(err.type == 'NOT_FOUND'){
        //save myself
        mc_cli.connect(function() {
            mc_cli.add( GLOBAL_KEY, uid, { flags: 0, exptime: 0}, function(err, status) {
                if (!err) { 
                    console.log(status);
                }
                else {
                    console.log(err);
                }
            });
        });
    }
[...]

elseこのコードは、次のエラーで分類されます。

{ type: 'CONNECTION_ERROR',
  description: 'Lost connection to server.' }

基本的に、コードが行っていることは、接続された ID の配列を誰も設定していないため、コードを実行する最初のノードがその実行を担当するということです。次のコードは示していません。これは単に ID のリストを取得し、独自の ID を追加するだけです。表示されているスニペットでエラーが発生します。現在、ライブラリでこのエラーを出力するコードは次のとおりです。

try {
    this.sock.write(command + crlf);
    if (value) {
      this.sock.write(value);
      this.sock.write(crlf);
    }
    this.queue.enqueue({ handler: handler, callback: callback });
}
catch (x) {
    callback({ type: 'CONNECTION_ERROR', description: 'Lost connection to server.' }, null);
}

何が原因なのか理解できないので、これはあまり役に立ちません。私はmongoDBで慣れているネストされたものを使用していますが、memcached、特にこのライブラリで同じことができるかどうかはわかりません。この問題を解決する方法について、経験のある人はいますか? ありがとう。

編集:使用しているライブラリへのリンクを追加するのを忘れていました: overclocked/mc

4

1 に答える 1

1

しばらくしてこれと戦おうとした後、ネストされた接続が可能であることに気付きました。エラーはそれが原因ではありませんでした。メソッドに構造化されていないデータを渡していることがわかりました.add()。受け入れるのは、 aNumberや a のような単純なものではなくStringBuffers です。そのため、保存したいすべてのデータを次のように変換する必要がありました。

new Buffer(data)

デフォルトのエンコーディングを使用します(私はそれだと思いますutf8)。これが誰かを地獄から救うことになることを願っています。私の問題の主な問題は、受け取ったエラーがまったく意味がないことです。

于 2012-11-09T11:19:09.690 に答える