Meteor - 为什么不只发布所有 collection 数据?

Meteor - Why not just publish all the collection data?

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

显然我并不是说要为用户这样做 collection,但是如果您有博客帖子 collection,这不是很有用吗?

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

发布一切对 'development' 环境有好处,因为流星默认添加 autopublish,但这在 'production' 环境中有一些谬误。我觉得这两点很重要

  1. 安全性:我们的想法是,只根据需要向客户端提供尽可能多的数据。您永远无法信任客户,也不知道客户可能使用这些数据做什么。对于您的用例,简单的博客文章,这可能不是一个严重的风险,但对于电子商务应用程序来说可能是一个严重的风险。您最不想看到的是黑客使用数据并利用您代码中的错误来做一些令人讨厌的事情。
  2. Data Overheads:对于订阅,一般使用waitOn。因此,在客户端可以使用所有数据之前,不会呈现模板。如果您有大量数据,则需要相当长的时间来呈现。所以,建议将数据保持在'only what to need'阶段,以优化这个时间。