【问题标题】:Meteor, define collections dynamicallyMeteor,动态定义集合
【发布时间】:2014-08-15 04:34:36
【问题描述】:

我们正在开发一个应用程序,需要能够即时创建新的 Mongo 集合。目前我们有这样的代码:

@Global = new Meteor.Collection('global')

我们在这个 mongo 集合中有一个文档,看起来像这样:

{ "title" : "room_list", "room_list" : ['chat1', 'chat2'], ... }

现在我想设置某种类型的循环或构造,基本上会创建以下内容

@chat1 = new Meteor.Collection('chat1')
@chat2 = new Meteor.Collection('chat2')

我们似乎需要这种类型的功能来动态创建新的数据集合。

我们正在研究某种类型的动态变量声明,还是有更好的方法来动态创建新的流星集合?

【问题讨论】:

    标签: mongodb coffeescript meteor


    【解决方案1】:

    在大多数情况下,您可能不想创建多个集合,而是使用一个集合并将其视图发送给客户端,具体取决于他们的订阅。

    您可能想查看我构建的 https://github.com/mizzao/meteor-partitioner 包,该包专为此目的而设计,并包含一个如何为多个聊天室执行此操作的示例。您还可以查看 https://github.com/mizzao/CrowdMapper 以获取已实现的示例。

    【讨论】:

    • 这看起来很有希望,但我担心一件事。在我们的应用程序中,我们希望我们的用户在任何给定时间都能够在多个聊天室中,并且似乎使用分区程序,这是不可能的?您的 API 文档中的 Partitioner.setUserGroup(userId, groupId) 说如果用户尝试一次进入多个,它会抛出错误?
    • 您不想同时为多个聊天室使用分区程序;您只需创建自己的索引方案。在任何情况下,聊天消息都应该在同一个集合中,并且每个消息的房间都应该有一个索引,而不是每个房间都有一个单独的集合。
    • 除了将集合用于消息之外,我们还有其他一些事情。那么回到最初的问题,是否可以像我上面写的那样设置动态房间?
    • 可以,但您可能会遇到maximum number of collections you can have in Mongo 的限制。我看不出您有任何理由要这样做。如果您只是更简洁地指定您的问题(也许在不同的问题中),我相信有人可以提出令人满意的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 2015-03-08
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多