0

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

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

例如,在我的群组部分,我可以在收益中加载“查看所有群组”页面、“创建新群组”页面或“仅查看我的群组”(我所属的群组)或“查看群组” " 获取组详细信息。

我的第一种方法是为每个子页面创建一个controller.js文件,该文件调用一个为子页面需求量身定制的订阅。例如,我有一个用于“查看所有组”子页面的“all_group”发布/订阅,以及一个用于“仅查看我的组”子页面的“my_groups”。

但这变得非常混乱。此外,我在两个文件夹中声明了我的“组”集合,因此我不确定客户可用数据的来源。

现在我解释了情况,这里是我的问题:

  • 当我console.table(Groups.find().fetch());在客户端上进行操作时,我看到了不应该存在的字段(即我当前的出版物或任何其他出版物不返回)。那是因为我在客户端声明了“组”集合吗?如何解决?
  • 我是否应该摆脱所有这些出版物,只创建一个包含允许客户查看的所有内容的出版物?然后我会从组部分页面控制器订阅它并使用一组数据。
  • 我是否应该简单地使用允许/拒绝规则阻止来自客户端的任何插入/更新/删除,并仅使用方法进行这些操作?
  • 将我的方法放在both文件夹中是否安全/建议这样我就不会失去延迟补偿功能?

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

  1. 如果我使用方法,我假设我不必否认本机驱动程序中的所有内容,我只需要比方法允许的更严格,对吧?
  2. 如果我将我的方法放在两个文件夹中,它将在客户端和服务器上执行,因此在“客户端离线”上下文中,即使客户端弄乱了我的方法,如果客户端结果不同,服务器也应该回滚更改比他的(假设无法使用允许拒绝规则完成更改)?即使使用这些方法,我也会有延迟补偿?
4

1 回答 1

1

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

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

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

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

于 2015-06-07T08:27:12.387 回答