尝试了解有关Meteor的一些最佳做法。
我想显示每个用户的产品列表。我可以想出两种方式来显示每个用户的产品。
我首选方法1,因为它意味着在服务器和客户端之间发送更少的数据,但我看到人们通常也使用方法2.
方法1是最佳做法吗?
下面的源代码仅供参考。
方法1:
$("#subSectionalChartCanvas").empty();
方法2:
//Templates
Template.products.onCreated(function() {
var self = this;
self.autorun(function() {
self.subscribe('products');
});
});
Template.products.helpers({
getProducts: function () {
return Products.find({}, { sort: { lastname: -1 }});
}
});
//Publication
Meteor.publish('products', function () {
return Products.find({'userid' : this.userId});
});
答案 0 :(得分:2)
一般来说,答案是 。
方法1
在大多数情况下,您只想将必要的文档发送给客户,原因有两个:
方法2
我强烈建议始终在模板助手中进行过滤。如果您的帮助程序意味着“仅显示当前用户的产品”,那么您绝对应该在调用find
时添加该选择器。其原因与代码维护有关。
假设从现在起6个月后,您出于某些无关的原因最终发布了其他产品文档。如果您没有上述选择器,您的模板可能会做错事并为其他用户显示产品。
答案 1 :(得分:1)
有一些因素会影响使用哪种方法。
例如,如果产品列表被视为私人信息,则您不应使用方法2,因为每个用户的产品列表都将发送给每个客户。另一方面,拥有一个巨型出版物(方法2)可以简化您的代码。例如,您可以在启动时订阅一次(例如),而不必担心按路径或模板模板管理订阅,就像使用方法1一样。
正如您已经确定的那样,另一个考虑因素是已发布的产品系列的大小。通常,尝试限制发送到客户端的数据量,同时保持代码的可维护性。
希望有所帮助。