模板级订阅,运行了很多时间......我应该使用吗?

时间:2016-06-06 01:00:12

标签: meteor

我正在做我的流星应用程序,它有1个收藏:学生
在服务器中我做了一个发布,它接收3个参数:查询,限制和跳过;避免客户订阅所有数据,只显示前10名。

我还有3个路径:

  • 学生/列表 - >根据搜索输入和分页(使用find)带来前10名;
  • student /:id - >向学生展示(使用findOne)
  • 学生/:id / edit - >编辑学生(使用findOne)

每个模板订阅学生集合,但每次用户在这些路径之间切换时,我的模板会重新渲染并重新订阅。

我应该只进行一次订阅,并根据此“全球”订阅进行查找吗?

我看到很多人都在谈论模板级订阅,但我不知道这是否是更好的选择。 关于在服务器上进行查询以发布而不发送所有数据,我看到人们也在说话,以避免数据流量......

在这种情况下,当我只有1个Collection时,最好是进行“全局”订阅吗?

1 个答案:

答案 0 :(得分:1)

你正在遵循一个正常的模式,虽然没有代码有点难以辨别。如果有很多学生,那么你真的不想全部发布它们,只有当前路线真正需要的东西。你应该做的是弄清楚为什么你的pub-sub很慢。它是服务器上的find()吗?你有非常大的学生对象吗? (在这种情况下,您可能希望限制返回的字段)。您正在运行的搜索是否正在进行mongo索引?

列表视图的出版物可以具有与单个文档视图不同的字段,例如:

Meteor.publish('studentList',function(){
  let fields = { field1: 1, field2: 1 }; // only include two fields
  return Students.find({},fields);
});

Meteor.publish('oneStudent',function(_id){
  return Students.find(_id); // here all fields will be included
});