3

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

我查看了minimongoddp-server中的代码,但我没有看到任何直接的方法来判断更改何时成功写入服务器。

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

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

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

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

4

1 回答 1

0

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

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

http://docs.meteor.com/#/full/observehttp://docs.meteor.com/#/full/observe_changes

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

于 2015-11-21T01:38:22.047 回答