我正在开发用户组系统。每个小组都有几个功能,我希望与群组集合的交互尽可能安全和简单,因为它仍处于早期阶段。
现在,我在我的网站上有一个组部分,我使用了几个嵌套页面。该部分的目的是允许用户进入一个组,如果该组是私有的,请求成员资格,浏览一个组对象等。
例如,在我的小组部分中,我可以在收益中加载“查看所有群组”页面,“创建新群组”页面或“仅查看我的群组”(我是其中的成员)或“查看群组”以获取群组详细信息。
我的第一种方法是为每个子页面创建一个controller.js
文件,该文件调用一个为子页面需求量身定制的订阅。例如,我为“查看所有群组”子页面提供了“all_group”发布/订阅,为“仅查看我的群组”子页面提供了“my_groups”。
但这变得非常混乱。另外,我在两个文件夹中都声明了我的“组”集合,所以我不确定要跟踪客户端可用数据的来源。
现在我解释了情况,这是我的问题:
console.table(Groups.find().fetch());
时,我会看到不应该存在的字段(即我当前的出版物或任何其他出版物未返回的字段)。那是因为我在客户端宣布了“群组”集合吗?如何解决这个问题?both
文件夹中,这样我就不会失去延迟补偿功能吗? 修改
好吧,我吓坏了,因为我在客户端收集了所有的收集数据,但在发布中只是一个糟糕的查询(我使用了field:1
和field:0
投影。
还有两个问题:
答案 0 :(得分:1)
为了更好地控制和可视化您的订阅,您可以使用msavin:mongol
。
创建一个包罗万象的出版物在性能方面不是一个好主意(向所有客户发送所有数据对每个参与者都是一种痛苦。)
如果你使用方法并删除了autopublish
,那么一切都被拒绝了...除了用户自己的个人资料上的更新。您可能也想手动拒绝。
使用方法和收集规则,您应该共享验证代码。这样,客户端和服务器以相同的方式验证(并且应该总是得出相同的结果),所以除非您的客户端搞砸了控制台,否则应该没有问题,并且应该保留滞后补偿。
如果您的服务器方法执行了客户端不应该知道的事情,您还可以在服务器上定义一次该方法,并在客户端上定义一次。同样的效果。