Meteor:如何在无限滚动页面中显示动态集合

时间:2014-04-13 11:04:38

标签: javascript meteor

在监控系统应用程序上, 我发布了一个庞大的集合的一小部分,因为大多数时候我们不需要更多的文档。

在服务器上:

Meteor.publish("amon", function() {
    return Mon.find({}, {
        sort: {
            utctime: -1
        },
        limit: 250
    })
})

问题在于,有时我需要在页面中向下滚动,以获得更多结果 重新发布不起作用(错误消息:忽略名为' amon'的重复发布)并且实际上不是一个选项,因为它会影响所有客户端。
下面是一段代码,用于检测我们何时接近页面滚动结束,以触发其他数据的加载,但它始终限于250个已发布的文档。

以下是一些代码,展示了如何显示250个文档:

$(window).scroll(function() {
      var livehistory = Session.get('livehistory')
      if (
          (document.getElementById('tabpage_1').style.display != "none") &&
          ($(document).height() - $(document).scrollTop() <= $(window).height() + 100) &&
          (livehistory < 2000)
          )
      {
        console.log("Scrolled Down");
        livehistory = livehistory + 200
        Session.set('livehistory', livehistory)
      } 
      if ($(document).scrollTop() < $(window).height()*0.5) {
        // We're back to normal mode, so reduce displayed history and enable live mode.
        Session.set('livehistory', 80)
        Session.set('live', true)
      } else {  
        Session.set('live', false)
      } 
});

这是模板。 (注意Reactive在向下滚动时禁用更新很方便)。

Template.log.loglines = function() {
    var query = Mon.find({}, {
        sort: {
            utctime: -1
        },
        limit: Session.get('livehistory'),
        reactive: Session.get("live") || false
    })
    return query
};

向下滚动页面时,如何显示超过250个文档? 理想情况下,通过使用&#34; skip&#34;来访问数百万个文档。只显示(和syncrhonize)所需的数据片段?

谢谢,

0 个答案:

没有答案