我应该为每个集合使用一个发布还是多个?

Should I use one publish per collection or several?

我正在开发用户组系统。每个组都有几个功能,我希望与组集合的交互尽可能安全和简单,因为它仍处于早期阶段。

现在,我在我的网站上有一个组部分,我在其中使用了多个嵌套页面。该部分的目的是允许用户进入一个组,如果该组是私有的则请求成员资格,浏览一个组对象等。

例如,在我的组部分中,我可以在 yield 中加载 "see all groups" 页面、"create a new group" 页面或 "see only my groups"(我所属的页面)或"view group" 获取群组详情。

我的第一个方法是为每个子页面创建一个 controller.js 文件,它调用一个为子页面需求定制的订阅。例如,我有一个 'all_group' publication/subscription 用于 "see all groups" 子页面,一个 "my_groups" 用于 "see only my groups" 子页面。

但这变得非常混乱。此外,我在 both 文件夹中声明了我的 "group" 集合,因此我不确定是否了解客户端可用数据的来源。

既然我已经解释了情况,那么我的问题是:

编辑 好吧,我吓坏了,因为我的所有收集数据都在客户端,但这只是发布中的一个错误查询(我同时使用了 field:1field:0 投影)。 还有两个问题:

  1. 如果我使用方法,我假设我不必拒绝本机驱动程序中的所有内容,我只需要比方法允许的限制更多,对吗?
  2. 如果我把我的方法放在两个文件夹中,它会同时在客户端和服务器上执行,所以在 "client offline" 上下文中,即使客户端弄乱了我的方法,服务器也应该回滚更改如果客户端结果与他的不同(假设无法使用允许拒绝规则完成更改)?即使使用这些方法,我也会有延迟补偿吗?

为了更好地控制和可视化您的订阅,您可以使用 msavin:mongol

创建一个包罗万象的发布在性能方面并不是一个好主意(将所有数据发送给所有客户端将对所有相关人员造成痛苦)。

如果您使用方法并删除了 autopublish,那么是的,一切都会被拒绝...除了对用户个人资料的更新。您可能也想手动拒绝。

对于方法和收集规则,您应该共享验证代码。这样,客户端和服务器以相同的方式验证(并且应该始终得出相同的结果),因此除非您的客户端搞砸了控制台,否则应该没有问题并且应该保留滞后补偿。
如果你的服务器方法做了一些客户端不应该知道的事情,你也可以在服务器上定义一次方法,然后在客户端上定义一次。同样的效果。