如果数据库查询中有限制,则Tracker.autorun不会触发

时间:2015-06-18 09:55:04

标签: mongodb meteor

当我在集合查找中有限制功能时,我遇到了使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']。我已经在限制中直接尝试了这个数字,所以它不是导致问题的配置参数。

任何想法为什么不会因为限制而被解雇?

1 个答案:

答案 0 :(得分:0)

我怀疑你的Tracker.autorun正在抛出异常。 Tracker.autorun始终最初运行,但来自http://docs.meteor.com/#/basic/Tracker-autorun

  

如果自动运行的初始运行引发异常,则计算将自动停止并且不会重新运行。

我不知道没有limit的{​​{1}}是否会导致异常,但检查您的日志 - sort对某种limit肯定更有意义。

另外:如果你的sort只是整数,那么_id排序对于最新的排序是有意义的,但是如果它们是Mongo id,你可能最好使用日期字段。