4

rethinkdb で既存の changefeed オブザーバーを登録解除または変更する方法はありますか? changes() 関数の戻り値を null に設定しても何も起こらないようですが、unsubscribe() 関数はありますか?

私が理想的にやりたいことは、変更フィードが作成された後にインデックス フィルター パラメーター (お気に入り) の 1 つを変更することです (結合の変更フィードが機能せず、基になるお気に入りコレクションが変更された場合はフィードを変更する必要があるため)。

ここにJavaScriptのサンプルコードがあります

  var observer = r.table("users")
                 .getAll(r.args(favorites), {index:"name"})
                 .changes().then(function(results) {


            results.each(function(err,row) {
              if (err) console.error(err);
              var prefix = row.new_val ? 'added' : 'deleted';
              var msg =  row.new_val ?  row.new_val :  row.old_val;
              console.log(prefix + ': ' +  msg.name);
          });

      });

 observer = null; //what do I do there to have it stop observing or unsubscribe... or change the subscription to something else.. say adding a filter or changing a filter?
4

2 に答える 2

4

JS に使用しているライブラリがわかりません。rethinkdb + rethinkdb-pool を使用すると、次の構文を使用できます。

r.table("users").getAll(r.args(favorites), {index:"name"})
                .changes().run(connection, function(err, cursor) {


     cursor.each(function(err,row) {
         if (err) console.error(err);
         var prefix = row.new_val ? 'added' : 'deleted';
         var msg =  row.new_val ?  row.new_val :  row.old_val;
         console.log(prefix + ': ' +  msg.name);
     });
}

その後、カーソルを閉じて変更の受信を停止できます。

cursor.close();

または、 connection を閉じることができます。これにより、接続に関連付けられているすべてのカーソルが自動的に閉じられます。

connection.close();
于 2015-10-14T17:48:34.453 に答える
0

私は特に JS ドライバーに詳しくありませんが、通常、ある時点でカーソルを受け取る必要があり、closeそのカーソルを呼び出すと、変更フィードが閉じます。(上記の API では、カーソルであるかどうobserverresultsはわかりませんが、それらのタイプを出力すると、表示できるはずです。)

于 2015-10-14T17:30:08.913 に答える