在我使用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属性的变化?
答案 0 :(得分:1)
我不是100%肯定,但我认为这是因为当您将.pluck('name', 'online')
添加到最后,然后更新followers
数组时,更改源逻辑将应用此选项然后将旧值与新值进行比较,由于两个弹拨的字段都没有改变,因此它决定了它是一个简单的"琐碎的"改变并放弃它。 (通常忽略琐碎的变化是你想要的,因为.pluck.changes
的主要目标之一是只在指定的字段发生变化时才会被通知。)
我认为这可能不是所期望的行为,但如果它们不会导致行进入或退出订阅范围,那么仅删除微不足道的更改可能更有用。我打开https://github.com/rethinkdb/rethinkdb/issues/5205来跟踪这一变化。
答案 1 :(得分:0)