我刚刚意识到,当您观察到 movedTo 某些事件 cursor, ,仅触发该事件的文档 相对的 在结果集中的位置,不仅是其索引。例如,如果结果集合首先等于 [1, 2, 3], ,然后更改为 [3, 1, 2], ,该事件将仅针对第三个文档触发,而不是全部。从效率的角度来看,虽然听起来很合理,但文档根本不清楚(看看 这里):

移动(之前的文档,从索引,toIndex,)

文档从结果集中改变了其位置,从 fromIndextoIndex(在具有ID的文档之前 before)。它的当前内容是文档。

对我来说,“更改了结果集中的位置,从索引到索引”听起来更像是所有三个都改变了位置,因此实际上:

  • 一个来自索引 0 索引 1, ...
  • 两个来自索引 1 索引 2, , 和 ...
  • 三个来自索引 20.

我想实现的是观察 cursor 并知道是否 index 每个文档是否更改。虽然我有一些粗略的想法如何实施此问题,但我想知道是否有一种简单的(最佳?)和“流星友好”的方法来解决这个问题。

有帮助吗?

解决方案

这种行为实际上不仅从性能的角度来看是完全有意义的。这样考虑:

当您使用时 observe 方法,您想通知所有发生的变化 收藏 (无论是在服务器上还是在Minimongo上)。因此,您收到的每个回调都是一个修改的实例 收藏。 当您通过将它们之一移至另一个地方来更改对象的顺序时,您会更改集合 一次, 因此,您只想收到此事件的一个回调。

您不想被单一事件通知42次!

 


 

我认为,对所有移动对象的通知乘以最简单的方法是在回调中手动循环。当项目从位置A移动到位置B时,您会知道A和B之间的所有对象也已移动。因此,如果您需要调整它们每个,只需在整个列表上从A到B的循环进行此操作即可。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top