在使用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/

10-10 02:37