在 meteor 中沙盒 collections 的最佳方法是什么?

What is the best way to sandbox collections in meteor?

我想将每个用户的数据与所有其他用户隔离开来。让用户只查看和修改她的东西的最佳方法是什么?我的方法是

  1. 每个 collection
  2. 上添加一个 userId 字段
  3. 配置每个已发布的 collection 以根据 userId 进行过滤。
  4. 将 simple-schema 与 collections2 结合使用,并在每个模式的 userId 字段上添加 autoValue: function(d) { return this.userId } 以在验证期间强制使用 userId。

这是一个好的和正确的方法吗?最佳做法是什么?

@dk。这对我来说听起来是个好方法,也被认为是最佳实践(根据我使用流星的经验)。

听起来不错。实际上,我在一个相当大的项目中使用了这种方法。

我还通过 reywood:publish-composite 包使用复合集合。

因此,某些集合没有 userId 键,但当前用户的文档是根据相关集合中的文档选择的。我也在处理用户之间共享许多文档的情况。

这提供了一定程度的规范化,同时工作得非常好。