包含`.pluck`时,RethinkDb更改进程无效

时间:2015-12-12 19:23:52

标签: rethinkdb

在我使用pluck()投影之前,我有一个改变了。如果我使用pluck,它不会在我的关注者嵌入式集合中从插入和删除中获取更改。

 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命令,但这似乎更容易出错,因为每当我向用户对象添加字段时,我都必须不断更新该列表。

在任一情景中,在更改源中都会获取用户在线资产的更新。

为什么pluck不显示关注者set / collection属性的变化?

2 个答案:

答案 0 :(得分:1)

我不是100%肯定,但我认为这是因为当您将.pluck('name', 'online')添加到最后,然后更新followers数组时,更改源逻辑将应用此选项然后将旧值与新值进行比较,由于两个弹拨的字段都没有改变,因此它决定了它是一个简单的"琐碎的"改变并放弃它。 (通常忽略琐碎的变化是你想要的,因为.pluck.changes的主要目标之一是只在指定的字段发生变化时才会被通知。)

我认为这可能不是所期望的行为,但如果它们不会导致行进入或退出订阅范围,那么仅删除微不足道的更改可能更有用。我打开https://github.com/rethinkdb/rethinkdb/issues/5205来跟踪这一变化。

答案 1 :(得分:0)

目前不支持此功能。查看this票证和this