2015-01-25 3 views
7

Вариант использования: приложение, которое я построил на app.foo.com, и экземпляр телескопа на community.foo.com на отдельных серверах приложений. Единственная коллекция, которую они бы разделили, - users. Я бы предоставил тот же URL-адрес url и oplog для обоих приложений, и убедитесь, что кроме users имена коллекций не перекрывались между двумя приложениями.Можно ли использовать одну и ту же БД для нескольких приложений Meteor?

Должно ли это работать нормально? Любая производительность?

+0

Возможный дубликат [Могу ли я получить несколько разных приложений Meteor, работающих на одном и том же экземпляре MongoDB?] (Http: // stackoverflow.com/questions/28012989/can-i-get-multiple-different-meteor-apps-running-reactively-off-the-same-mongodb) –

+2

@DavidWeldon, я не думаю, что это дубликат, он просто хочет часть базы данных для совместного использования. –

ответ

6

Проблема заключается в том, что вам нужно поделиться именами коллекций.

Если вы используете свои базы данных, вы также застрахованы от телескопа, используя имя коллекции, которое ваше другое приложение также использует для будущей версии.

Что вы можете сделать, это только делитесь коллекцией users, если хотите.

код стороне сервера (не требуется на клиенте)

Accounts.connection = DDP.connect("https://<telescope app url>"); 

Meteor.users = new Mongo.Collection("users", { 
    _preventAutopublish: true, 
    connection: Accounts.connection 
}); 

Или более непосредственно (не является предпочтительным, если вы позволяете OAuth логины)

var database = new MongoInternals.RemoteCollectionDriver("<mongo url of telescope app>"); 
Meteor.users = new Mongo.Collection("users", { _driver: database }); 

Так это приложение теперь использует телескоп Коллекция пользователя приложения.

4

Не было бы проблем с этим вообще. Например, это обычный вариант использования приложения, ориентированного на пользователя, и приложения для администратора, использующего один и тот же db.

+0

Да. Нет проблем. Вы можете публиковать и подписываться, как обычно. Mongo oplog будет синхронизировать все приложения. – benstr

1

Это не должно быть сделано на уровне базы данных:

Когда любой из этих двух приложений развиваться, они могли бы сломать себя или другого.

Это те функции, которые относятся к уровню API или отдельному сервису.

Таким образом, у вас есть служба идентификации пользователей, которая обрабатывает аутентификацию (даже междоменную) и основные пользовательские данные и оставляет каждую пользовательскую информацию, относящуюся к конкретному приложению, в ее собственной части вашей экосистемы. Никакого риска расплавления.

я могу порекомендовать несколько:

  • Firebase
  • Анализировать
  • Hull.io (отказ от ответственности: Я основатель)
  • Auth0
  • LoginRadius

Большинство из них имеют клиентские библиотеки, которые вы используете для проверки подлинности и просто передаете верните текущий идентификатор пользователя в ваше приложение.

Некоторые из них также предлагают, чтобы иметь одно приложение является Мастер и аутентификации пользователей, а затем говорит службу, кто авторизованы, так что вы можете получить данные из другого приложения (в корпусе мы называем это Принесите свой собственный пользователей)

Смежные вопросы