【问题标题】:Meteor - Why not just publish all the collection data?Meteor - 为什么不直接发布所有的收集数据?
【发布时间】:2017-01-14 18:49:43
【问题描述】:
这可能是一个很容易回答的问题,因为它可能只是我缺乏理解,但如果您必须运行两次查询 - 一次在服务器上,一次在客户端上 - 为什么不只发布所有集合数据,然后只在客户端运行一个查询?
显然我的意思不是为用户集合这样做,但如果你有一个博客帖子集合,这不是有益的吗?
发布所有帖子数据,然后订阅它并在客户端上运行任何必要的查询以获取您需要的数据。
【问题讨论】:
标签:
mongodb
meteor
meteor-publications
【解决方案1】:
发布一切对“开发”环境有好处,因为流星默认添加autopublish,但这在“生产”环境中有一些谬误。我觉得这两点很重要
- 安全性:想法是,只向客户端提供所需的数据。您永远无法信任客户,您也不知道客户可能会将这些数据用于什么目的。对于您的用例,简单的博客文章,这可能不是一个严重的风险,但可能是电子商务应用程序的一个关键风险。您最不想看到的就是黑客使用数据并利用代码中的错误来做令人讨厌的事情。
- 数据开销:对于订阅,通常使用
waitOn。因此,在所有数据都可供客户端使用之前,不会呈现模板。如果您有大量数据,则渲染将花费大量时间。因此,建议将数据保持在“仅需要什么”阶段以优化此时间。