如何判断Meteor minimongo何时与mongo服务器同步



我有一个Meteor应用程序,当客户端对已发布集合所做的所有更改都已写入服务器时,我希望能够在客户端进行检查。

我已经查看了minimongo和ddp服务器中的代码,但我看不到任何直接的方法来判断更改何时成功写入服务器。

Minimongo概述了保存数据的过程:

  • 用户触发客户端上的交互
  • 模拟将一些突变应用于局部状态
  • RPC被激发以在服务器上执行
  • 一段时间后,RPC返回结果
  • 一段时间后,RPC返回一条"更新"消息(在DDP级别),这意味着RPC的所有更改都已持久化
  • 在这一点上,我们知道,服务器上的所有实际更改都是同步的,我们可以丢弃模拟的突变(保留服务器上的真实更改)

我可以覆盖LocalCollection.prototype.saveOriginalsLocalCollection.prototype.retrieveOriginals以知道它们何时被调用,但我不知道如何验证数据何时实际保存。即使Meteor服务器关闭,retrieveOriginals也会被调用。

是否还有其他地方可以挂接回调或侦听事件以了解何时同步更改?

如果您希望实现自定义观察,这可能会有所帮助:

建立一个实时查询,该查询在查询结果更改时调用回调。回调接收受影响文档的全部内容,以及旧内容(如果适用)。如果您只需要接收已更改的字段,请参阅observeChanges。

http://docs.meteor.com/#/full/observe或http://docs.meteor.com/#/full/observe_changes

此外,您可能希望将Mongo的writeConcern与Meteor一起使用,我不确定如何使用,但希望提示能有所帮助;https://docs.mongodb.org/v3.0/reference/method/db.collection.save/

最新更新