Meteor - 为什么不公布所有的收集数据?

时间:2016-09-07 07:30:54

标签: mongodb meteor meteor-publications

这可能是一个非常容易回答的问题,因为它可能只是我缺乏理解,但如果你不得不两次运行查询 - 一次运行服务器而一次运行客户端 - 为什么不发布所有集合数据,然后只在客户端上运行一个查询?

显然,我不是故意为用户收集这样做,但如果你有博客帖子收藏,这不是有益的吗?

发布所有发布数据,然后订阅它并在客户端上运行任何必要的查询以获取所需的数据。

1 个答案:

答案 0 :(得分:4)

发布所有内容对于“开发”来说是有益的。环境作为流星默认添加autopublish,但这在“生产”中有一些谬误。环境。我发现这两点很重要

  1. 安全性:这个想法是,根据需要向客户提供尽可能多的数据。您永远不会信任客户,也不会知道客户可能使用的数据。对于您的用例,简单的博客文章,这可能不是一个严重的风险,但可能是电子商务应用程序的关键风险。最后一件事,你想要的是黑客使用数据并利用代码中的错误做些讨厌的事情。
  2. 数据开销:对于订阅,通常使用waitOn。因此,在所有数据都可供客户端使用之前,不会呈现模板。如果您有大量数据,则渲染需要相当长的时间。因此,建议仅将数据保存在需要的地方。阶段也要优化这个时间。