#mongodb #coffeescript #meteor
#mongodb #coffeescript #meteor
Вопрос:
Мы работаем над приложением и должны иметь возможность создавать новые коллекции Mongo «на лету». В настоящее время у нас есть такой код, как этот:
@Global = new Meteor.Collection('global')
У нас есть документ в этом mongo collections, который выглядит следующим образом:
{ "title" : "room_list", "room_list" : ['chat1', 'chat2'], ... }
Теперь я хочу настроить некоторый тип цикла или конструкции, который в основном создавал бы следующее
@chat1 = new Meteor.Collection('chat1')
@chat2 = new Meteor.Collection('chat2')
Похоже, нам нужна функциональность такого типа, чтобы иметь возможность создавать новые коллекции данных «на лету».
Мы изучаем какой-то тип объявления динамической переменной или есть лучший способ динамического создания новых коллекций meteor?
Ответ №1:
В большинстве случаев вы, вероятно, не хотите создавать несколько коллекций, а вместо этого используете одну коллекцию и отправляете ее просмотры клиентам в зависимости от их подписки.
Возможно, вы захотите проверить https://github.com/mizzao/meteor-partitioner пакет, который я создал, разработан специально для этой цели и включает в себя пример того, как это сделать для нескольких комнат чата. Вы также можете увидеть https://github.com/mizzao/CrowdMapper для реализованного примера.
Комментарии:
1. Это выглядит многообещающе, но меня беспокоит одна вещь. В нашем приложении мы хотим, чтобы наши пользователи могли находиться в более чем одной комнате чата в любой момент времени, и кажется, что с разделителем это невозможно? Partitioner.setUserGroup(userId, groupId) в ваших документах API говорится, что он будет выдавать ошибки, если пользователь попытается одновременно использовать более одного?
2. Вы не хотели бы использовать partitioner для нескольких комнат чата одновременно; вы бы просто создали свою собственную схему индексации. В любом случае, сообщения чата должны быть в одной коллекции, и должен быть индекс для комнаты каждого сообщения, а не отдельная коллекция для каждой комнаты.
3. У нас есть и другие вещи, помимо простого использования коллекции только для сообщений. Итак, возвращаясь к первоначальному вопросу: возможно ли создать динамические комнаты, как я написал выше?
4. Вы можете, но, вероятно, столкнетесь с ограничениями на максимальное количество коллекций, которые вы можете иметь в Mongo . Я не вижу никаких причин, по которым вы хотели бы сделать это таким образом. Если бы вы просто сформулировали свою проблему немного более кратко (возможно, в другом вопросе) Я уверен, что кто-то может предложить удовлетворительный подход.