当我在集合查找中有限制功能时,我遇到了使Tracker.autorun工作的问题。
功能是
Tracker.autorun(function () {
console.log("sparkline Tracker.autorun called");
var data = Infolite.find({
}, {
//limit: HS_CONFIG['no_sparkline_history'],
}).fetch();
实际上,该功能正常工作,只要我取消注释它永远不会被触发的限制。
这是在它自己的模板中(与图形有关),并且意在查看来自更大数据集的数据子集。
该出版物
Meteor.publish('History', function() {
return Infolite.find({}, {
sort: {_id: -1},
limit: HS_CONFIG['no_generation_history'],
fields: {
"a": 1,
"c": 1,
"g": 1,
"p": 1,
"w": 1,
"n": 1,
"s": 1,
"t": 1,
"cs": 1,
"di": 1,
"ti": 1,
"wd": 1,
"tp": 1,
"pr": 1,
},
});
其中HS_CONFIG ['no_generation_history']远大于HS_CONFIG ['no_sparkline_history']。我已经在限制中直接尝试了这个数字,所以它不是导致问题的配置参数。
任何想法为什么不会因为限制而被解雇?
答案 0 :(得分:0)
我怀疑你的Tracker.autorun
正在抛出异常。 Tracker.autorun
始终最初运行,但来自http://docs.meteor.com/#/basic/Tracker-autorun
如果自动运行的初始运行引发异常,则计算将自动停止并且不会重新运行。
我不知道没有limit
的{{1}}是否会导致异常,但检查您的日志 - sort
对某种limit
肯定更有意义。
另外:如果你的sort
只是整数,那么_id
排序对于最新的排序是有意义的,但是如果它们是Mongo id,你可能最好使用日期字段。