关于流星的多个问题 pub/sub

Multiple Questions about meteor pub/sub

我是 Meteor 的新手。我打算向集合(客户端+服务器)添加一个新文档并让服务器选择更改。然后,当我需要用集合中所有 inserts/updates/removes 的总和更新我的模板时,我从服务器发布集合并在客户端订阅它。

  1. 一旦我们发布了东西,我们可以订阅,停止订阅然后再订阅吗?我打算仅在按下客户端上的 'add document' 按钮时订阅。在处理这样一个点击的函数中,我打算插入,然后调用服务器上的方法发布,然后订阅。这是解决这个问题的正确方法吗?

  2. 有没有办法简化这个?就像我将文档的插入或更新放入客户端集合,让 Meteor 处理更新服务器端集合,然后更新客户端模板?

  3. 在我看来,从我学到的一点点知识来看,对于我拥有的一些用例,每次点击都需要发布。我这样做是为了更新反应式 table 以在每次 selected 文件夹时列出当前文件夹的内容。因此,在服务器上发布会检查该文件夹集合中的内容作为父文件夹,并 returns 它。一个文件夹每新增 select 就意味着新的发布。可以做些什么来简化这个吗?

您过于复杂化了 Meteor 背后的核心概念之一:反应性。不过,这里有一些对您的 3 个问题的澄清:

  1. 这不是您需要担心的事情。一旦你发布一个 collection,或您的 collection 的子集,已发布给所有人 连接的客户端。当您订阅上述出版物时,任何 所做的更新会被动地下拉到所有连接的 具有该订阅的客户。因此,如果我将文档添加到 collection 我订阅了,比如说一个任务列表,它将是 反应性地发送给任何订阅它的客户, 包括我自己的。

  2. Meteor 有一种叫做延迟补偿的东西,可以立即 更新用户界面,只要它与 服务器说,插入似乎是瞬间发生的。这个 行为是 Meteor 默认做的,如果你插入一个 collection 来自客户,只要您的插入获得批准(即 只要客户端有权插入 collection).

  3. 您不需要每次都重新发布。只要你发布 您需要的 collection 中的文档,并且您已订阅 客户,任何符合您 Mongo 标准的新文件 客户端上的选择器和 return 语句将可用于 您和您的 UI 将自动更新。