2015-10-14 42 views
3

有沒有辦法在rethinkdb中取消訂閱或更改現有的changefeed observer?將changes()函數的返回值設置爲null似乎沒有任何作用,是否有unsubscribe()函數?如何取消訂閱或更改rethinkdb中的更改進料?

我最想做的就是在創建更改供稿之後更改其中一個索引過濾器參數(收藏夾)(因爲連接上的更改供應不起作用,並且如果基礎收藏夾集合更改,我必須更改供稿)。

這是在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? 

回答

2

不知道您用於JS的庫是什麼。隨着rethinkdb + rethinkdb池,你可以使用這個語法:

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(); 
0

示例代碼,我不熟悉,尤其是JS的驅動程序,但一般你應該在某些時候收到一個光標,對光標呼籲close將關閉changefeed。 (我不確定在上面的API中,observerresults是否是光標,但是如果您打印它們的類型,則應該可以看到。)