何かを保存したい 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