对于那些非常熟悉 Meteor 架构的人来说,这是一个问题。
我正在尝试设计一个智能包,可以透明地运行 Meteor 应用程序的多个“副本”。也就是说,给定一个现有的 Meteor 应用程序和几个预定义的用户组,该程序包可以半自动地“隔离”该应用程序 - 以一种方式运行它,对于每个用户组,似乎只有这些用户在使用该应用程序.
我知道这个功能可以为任何应用程序定制设计。但是,考虑到 MeteorCollection
和所有应用程序的使用,我正在寻找智能包最直接的方法,以在任何现有应用程序之上提供此功能。因此,它或多或少应该满足以下条件:
- 它应该和普通的 Meteor 应用程序一样高效。
- 将现有的 Meteor 应用程序转换为使用此系统需要最少的代码修改。
- 该包不应该修改或覆盖 Meteor 并且相对面向未来。
以下是我为这个问题考虑过的一些方法和相应的缺点:
- 使用常规 Meteor 应用程序的所有集合,并使用代表用户所在组的附加 id 标记每个文档。每个用户的发布/订阅仅提取具有相同组 id 的文档。
- 以某种方式覆盖
Meteor.Collection
(或实现相同的接口),使其了解这些不同的组,并且从客户端的角度来看,它的行为就像当前用户的组是整个应用程序一样。
我在这里从真正了解 Meteor 系统的人那里寻找好主意。我如何设计这个功能,使绝大多数 Meteor 应用程序可以轻松转换为使用它(即避免非常脆弱的疯狂黑客),但在 Meteor 之上实现简单且高效?
(如果你是纽约地区的流星大师,我很乐意带你出去吃饭讨论这个!)