2015-12-12 29 views
3

我有一個換刀工作正常,直到我使用pluck()投影。如果我使用pluck,它不會在我的追隨者嵌入式集合中選擇插入和刪除的更改。當包含`.pluck`時RethinkDb換刀不工作

r.table('users') 
    .getAll(name, {index: 'followers'}) 
    //.without('password', 'phone') 
    .pluck('name', 'online') // using pluck doesn't pick up changes in insert/delete from followers 
    .changes({includeInitial:true}); 

我可以使用without命令,但似乎更容易出錯,因爲我必須不斷更新該名單隨時我添加字段的用戶對象。

任何一種情況下,更新用戶的在線資產都會在換貨進貨中找到。

爲什麼採摘不會對追隨者的集合/集合屬性顯示更改?

回答

1

我不是100%肯定,但我認爲這是因爲當您添加.pluck('name', 'online')到底,然後你更新followers陣,changefeed邏輯應用摘去然後將舊值與新值,並且由於沒有任何被彈出的字段改變,它決定這是一個「微不足道」的改變並且放棄它。 (一般來說,忽略瑣碎變化是你想要的,因爲.pluck.changes的主要目標之一是隻在指定字段發生變化時才被通知。)

雖然我認爲這可能不是期望的行爲:如果它們不會導致該行進入或退出訂閱範圍,則更有用的是僅放棄無用的更改。我打開https://github.com/rethinkdb/rethinkdb/issues/5205來跟蹤這一變化。

0

現在不支持此功能。檢查this票和this

+0

這些問題涉及獲取* point * changefeeds轉換的變化,如不支持的'.get.pluck.changes'。 'get_all.pluck.changes'應該被支持,因爲'get_all'使它成爲一個範圍變換。 – mlucy