Meteor Publication和Subscription在使用skip和limit之后获取所有记录

时间:2018-01-07 06:25:20

标签: meteor

我们在流星中使用了跳过和限制的发布和订阅,并在客户端获取所有记录。

Meteor.publish('jobOrders', function(skip, limit) {
  return (jobOrders.find({}, {
    skip: skip,
    limit: limit
  }));
});
Template.templateName.onCreated(function() {
  this.subscribe("jobOrders", 0, 2);
});
Template.templateName.helpers({
  methodName: function() {
    var totalNoOfRecords = jobOrders.find({}).count();
    console.og("records are", totalNoOfRecords);
    return totalNoOfRecords;
  }
});

1 个答案:

答案 0 :(得分:0)

原因可能是因为您在其他模板中有其他pub-subs从jobOrders集合中获取数据。

请在您当前的模板中评论您的订阅,看看您是否仍然可以从此集合中获取记录。如果您在评论订阅后看到所有记录,那应该是因为其他订阅。

要解决此问题,您必须执行以下操作之一:

  • 更改正在获取所有记录的其他订阅,以便使用

    仅在该模板中提供数据
    Template.instance().subscribe()
    

    而不是使用Meteor.subscribe(),这将使所有模板中的客户端数据都可用。

  • 在客户端过滤您的记录。

    Template.templateName.helpers({
       methodName: function() {
          var totalNoOfRecords = jobOrders.find({skip:0, limit: 2}).count(); //Filter on the client side
          console.og("records are", totalNoOfRecords);
          return totalNoOfRecords;
       }
    });
    

注意:另一种可能是你没有删除不安全的软件包,它将自动发布所有集合中的所有记录。