在监控系统应用程序上, 我发布了一个庞大的集合的一小部分,因为大多数时候我们不需要更多的文档。
在服务器上:
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)所需的数据片段?
谢谢,