6

对于那些非常熟悉 Meteor 架构的人来说,这是一个问题。

我正在尝试设计一个智能包,可以透明地运行 Meteor 应用程序的多个“副本”。也就是说,给定一个现有的 Meteor 应用程序和几个预定义的用户组,该程序包可以半自动地“隔离”该应用程序 - 以一种方式运行它,对于每个用户组,似乎只有这些用户在使用该应用程序.

我知道这个功能可以为任何应用程序定制设计。但是,考虑到 MeteorCollection和所有应用程序的使用,我正在寻找智能包最直接的方法,以在任何现有应用程序之上提供此功能。因此,它或多或少应该满足以下条件:

  • 它应该和普通的 Meteor 应用程序一样高效。
  • 将现有的 Meteor 应用程序转换为使用此系统需要最少的代码修改。
  • 该包不应该修改或覆盖 Meteor 并且相对面向未来。

以下是我为这个问题考虑过的一些方法和相应的缺点:

  • 使用常规 Meteor 应用程序的所有集合,并使用代表用户所在组的附加 id 标记每个文档。每个用户的发布/订阅仅提取具有相同组 id 的文档。
  • 以某种方式覆盖Meteor.Collection(或实现相同的接口),使其了解这些不同的组,并且从客户端的角度来看,它的行为就像当前用户的组是整个应用程序一样。

我在这里从真正了解 Meteor 系统的人那里寻找好主意。我如何设计这个功能,使绝大多数 Meteor 应用程序可以轻松转换为使用它(即避免非常脆弱的疯狂黑客),但在 Meteor 之上实现简单且高效?

(如果你是纽约地区的流星大师,我很乐意带你出去吃饭讨论这个!)

4

1 回答 1

6

我已经着手解决这个问题,并将其放入 Meteor 智能包中。它满足我在问题中提到的所有要求。有关更多详细信息,请参阅文档和说明。

https://github.com/mizzao/meteor-partitioner

因为我已经在实践中使用了它,所以代码非常稳定并且有一套很好的测试。欢迎评论和投稿。

使用它的包的示例如下:

https://github.com/HarvardEconCS/turkserver-meteor

于 2014-04-03T03:09:46.650 回答