【问题标题】:Meteor subscription to get only new documentsMeteor 订阅仅获取新文档
【发布时间】:2017-09-05 21:49:18
【问题描述】:

只是想知道是否有办法将我的流星订阅设置为仅从 mongo 集合中加载新文档,避免同步删除和更新(因为它们与显示给用户的数据无关)。
为什么我需要那个?似乎任何时候我在离线一段时间后执行Meteor.subscribe,整个集合都会再次从服务器发送到客户端,而我只需要新记录。

我认为这样做是为了保持本地/远程数据库的完整性,但是由于我的应用程序计划在线/离线工作(我也在使用 groundDB),在我看来这在数据使用方面会非常低效。

提前致谢。

【问题讨论】:

    标签: mongodb meteor grounddb


    【解决方案1】:

    您可以创建仅发送新文档的发布。喜欢:

    Meteor.publish('newDocumentsOnly', () => {
      let initializing = true;
      const handle = Collection.find().observeChanges({
        added: (id, fields) => {
          if (initializing) return;
          this.added('Collection', id, fields);
        }
      });
      initializing = false;
      this.ready();
      this.onStop(() => {
        handle.stop();
      });
    });
    

    【讨论】:

    • 谢谢。有用!你知道是否有办法观察集合中数组内的变化?我的意思是,检测任何时候将新对象推入数组...
    • 那么你也应该注意changed。如果您只想发送数组中的更改,您也可以手动进行差异。但这变得更加复杂。
    猜你喜欢
    • 2015-11-29
    • 2021-07-18
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多