rethinkdb - 如何取消订阅或更改 rethinkdb 中的更改源?

标签 rethinkdb rethinkdb-javascript

有没有办法在 rethinkdb 中取消订阅或更改现有的 changefeed 观察者?将 changes() 函数的返回值设置为 null 似乎没有任何作用,是否有 unsubscribe() 函数?

理想情况下,我想做的是在创建 changefeed 后更改索引过滤器参数之一(收藏夹)(因为连接上的 changefeed 不起作用,如果基础收藏夹集合发生变化,我必须更改提要)。

这是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?

最佳答案

不知道您为 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);
     });
}

所以在那之后你就可以 close cursor停止接收更改:
cursor.close();

或者您可以 close connection ,它将自动关闭与连接关联的所有游标:
connection.close();

关于rethinkdb - 如何取消订阅或更改 rethinkdb 中的更改源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129824/

相关文章:

javascript - RethinkDB - 如何通过查询获取单个文档?

node.js - RethinkDB 连接 "must be open"但永远不会关闭

javascript - rethinkdb eqJoin 匹配

rethinkdb - 限制 rethinkdb 查询中的嵌套对象结果

包含 `.pluck` 时 RethinkDb 更改提要不起作用

go - RethinkDB - 在同一数据集和表中按值使用 Match() 进行过滤

RethinkDB 分片和副本与 MongoDB 分片和副本集

database - RethinkDB:​​尝试在一次操作中添加记录

javascript - RethinkDB,将元素添加到嵌套的数组中