我正在做我的流星应用程序,它有1个收藏:学生
在服务器中我做了一个发布,它接收3个参数:查询,限制和跳过;避免客户订阅所有数据,只显示前10名。
我还有3个路径:
每个模板订阅学生集合,但每次用户在这些路径之间切换时,我的模板会重新渲染并重新订阅。
我应该只进行一次订阅,并根据此“全球”订阅进行查找吗?
我看到很多人都在谈论模板级订阅,但我不知道这是否是更好的选择。 关于在服务器上进行查询以发布而不发送所有数据,我看到人们也在说话,以避免数据流量......
在这种情况下,当我只有1个Collection时,最好是进行“全局”订阅吗?
答案 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
});