在使用pluck()
投影之前,我的changefeed可以正常工作。如果我使用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
命令,但这似乎更容易出错,因为每当我向用户对象添加字段时,我都必须不断更新该列表。在任何一种情况下,用户在线属性的更新都会在changefeed中获取。
为什么采摘不显示对关注者集合/集合属性的更改?
最佳答案
我不确定100%,但是我认为这是因为当您将.pluck('name', 'online')
添加到末尾,然后更新followers
数组时,changefeed逻辑会应用pluck,然后将旧值与新值进行比较,并且采摘字段均未更改,它决定这是一个“微不足道的”更改,并将其删除。 (总的来说,您希望忽略琐碎的更改,因为.pluck.changes
的主要目标之一是仅在指定字段更改时才得到通知。)
我认为这可能不是所希望的行为:如果不使琐碎的更改不引起行进入或退出预订范围,则仅删除琐碎的更改可能更有用。我打开https://github.com/rethinkdb/rethinkdb/issues/5205跟踪该更改。
关于rethinkdb - 当包含`.pluck`时,RethinkDb changefeeds不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34243969/