我如何取消订阅或更改 rethinkdb 中的更改提要?
How do I unsubscribe or change a changefeed in rethinkdb?
有没有办法取消订阅或更改 rethinkdb 中现有的 changefeed 观察器?把changes()函数的return值设置为null好像也没什么作用,有unsubscribe()函数吗?
我最想做的是在创建更改源后更改其中一个索引过滤器参数(收藏夹)(因为连接上的更改源不起作用,如果基础收藏夹 collection 变化)。
这里是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 驱动程序,但通常您应该在某个时候收到一个游标,并且在该游标上调用 close
将关闭更改源。 (我不确定上面的 API 中 observer
还是 results
是光标,但是如果你打印它们的类型你应该能够看到。)
不知道你用的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 中现有的 changefeed 观察器?把changes()函数的return值设置为null好像也没什么作用,有unsubscribe()函数吗?
我最想做的是在创建更改源后更改其中一个索引过滤器参数(收藏夹)(因为连接上的更改源不起作用,如果基础收藏夹 collection 变化)。
这里是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 驱动程序,但通常您应该在某个时候收到一个游标,并且在该游标上调用 close
将关闭更改源。 (我不确定上面的 API 中 observer
还是 results
是光标,但是如果你打印它们的类型你应该能够看到。)
不知道你用的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();