Как я могу делиться коллекциями MongoDB между приложениями Meteor?
Я хотел бы иметь приложение администратора и клиентское приложение для моего проекта. В идеале я хотел бы иметь общую коллекцию MongoDB. Как я смогу это сделать?
Я попытался создать коллекции с тем же именем в двух разных приложениях, но обнаружил, что Meteor будет хранить данные отдельно. Любая идея, что я могу сделать? Спасибо.
Ответы
Ответ 1
export MONGO_URL=mongodb://localhost:3002/meteor
Затем запустите приложение meteor, оно изменит использование метеоритов базы данных по умолчанию. Поэтому совместное использование баз данных или коллекций не будет проблемой!
По административной причине я использовал бы индивидуальный сервер MongoDB, которым управлял сам, кроме использования встроенного в MeteorDB метеорного сервера.
Ответ 2
Разумный вопрос и, вероятно, стоит обсудить сверх этого ответа:
Соединение MongoDB обрабатывается самим процессом приложения Meteor, и это - насколько я понимаю и понимаю - часть философии Meteors, ориентированная на подход, который может быть описан следующим образом: один источник данных обслуживает одно приложение, принадлежащее ему, но многие клиенты, подписавшиеся на него.
Это означает, что предпочтительным способом является объединение клиентов "admin" и "клиент" в одном приложении (т.е. ваше приложение Meteor).
Однако из административного представления сервера соединения Meteor обрабатываются таким образом, что всегда есть локальный источник данных по умолчанию, который находится в каталоге вашего проекта (.meteor/local/db
, try meteor mongo --url
для получения строки соединения mongo while выполняется процесс подачи метеора). Но тем не менее можно указать дополнительную строку источника данных для целей развертывания, как описано в этих инструкциях .
Таким образом, вам нужно будет выбрать несколько жуткий способ "локального развертывания разработки" для вашей планируемой настройки, чтобы работать. Или вы идете и взламываете источники и... нет, забудьте об этом. Вероятно, вы хотите, чтобы ваше приложение и клиенты использовали, например, обновления в режиме реального времени (публиковать), поэтому приложение Meteor привязано к "источнику данных приложения" и наоборот. При подключении из другого приложения события, которые вызывают изменения в модели, не будут передаваться через эти приложения. Сам экземпляр mongoDB не знает об этом.
Я уверен, что основная команда не будет предоставлять подключение источника данных к разделу конфигурации по рассматриваемым причинам, если они не расширят свою архитектуру с помощью какой-либо концепции модуля, которая обеспечивает общий уровень обслуживания базовой абстракции модели/коллекций через Meteor экземпляры - по крайней мере, поддержку осведомленности о событиях публикации/подписки.
Ответ 3
Попробуйте этот DDP-тест, который я взломал вместе, чтобы создать мост для двух приложений (сервер A и B).
Оба сервера могут управлять данными, но данные хранятся только в одной коллекции на сервере А.
См. эту ссылку, а также