【问题标题】:Namespaced Collections in MeteorMeteor 中的命名空间集合
【发布时间】:2014-05-18 16:34:47
【问题描述】:

我目前正在开发一个 Meteor 应用程序,该应用程序将基于不同的包(可能由不同的开发人员创建)。

我的问题是,是否有一种类似流星的方式来命名空间集合,这样它们就不会与其他可用的集合发生冲突。

例如,我有一个包使用名为“todos”的集合,而另一个包也可能包含一个名为“todos”的集合。有没有办法为这些集合命名(例如,加上它们的包名)?

我发现在 MongoDB 中有一个使用 '.' 的命名空间选项: http://docs.mongodb.org/manual/faq/developers/#what-is-a-namespace-in-mongodb

这也是 Meteor 中命名空间集合的最佳方式吗?

以 Rails 为背景来到 Meteor,我记得您可以在 Rails 中创建命名空间引擎(这也创建命名空间数据库表)。 Meteor 有类似的东西吗?

我最接近的是我发现的这个问题: https://github.com/CollectionFS/Meteor-cfs-gridfs/issues/6

提前致谢!

【问题讨论】:

  • 据我所知,MongoDB 不允许您创建命名空间集合(数据库除外),Meteor 也不允许。
  • 除非您想在字符串名称中手动命名它们(例如:“bobbyApp_questions”和“aliceApp_questions” - 没有访问分离或任何东西)
  • 因此,如果合适,请使用单独的数据库。
  • 这个包atmospherejs.com/package/dbproxy 可能会有所帮助。
  • 感谢您的 cmets!我想我会坚持将命名空间添加到集合名称(例如“fooCollection”或“foo_collection”)

标签: mongodb namespaces meteor minimongo


【解决方案1】:

在集合名称中使用句点是 Meteor 集合的完美命名空间方案,就像您单独使用 MongoDB 时一样。

var TodoCollection = Meteor.Collection('packageName.todos');

CollectionFS 等包使用这种技术来避免集合名称冲突。

【讨论】:

  • 谢谢!之前我使用过诸如 Meteor.Collection('fooBarBaz'); 之类的东西。点符号使它更清晰,感觉也更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 2015-02-09
  • 2015-12-23
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多