2015-04-14 1 views
0

У меня есть приложение Meteor. который использует базу данных в другой форме по умолчанию «метеорит»:Не удается получить Базисный пакет для указания нужной базы данных

var database = new MongoInternals.RemoteCollectionDriver ("mongodb: //127.0.0.1: 3001/my-db");

Однако каждый раз, когда я регистрирую нового пользователя, используя пакет Accouts-Base, он продолжает добавлять новую пользовательскую запись в коллекцию Users в базе данных «meteor». Есть ли способ использовать этот пакет с альтернативной базой данных?

P.s. Я в разработке, если это имеет значение.

ответ

1

Глядя на directly at the code for the accounts-base package (Meteor v 1.0.4), похоже, что они официально не поддерживают способ установки базы данных для коллекции пользователей. Как вы можете видеть из кода, сервер всегда подключается с помощью Meteor.connection по умолчанию:

Meteor.users = new Mongo.Collection("users", { // line 141 
    _preventAutopublish: true, 
    connection: Meteor.isClient ? Accounts.connection : Meteor.connection 
}); 

Accounts.connection установлен выше, но это явно не поддерживаются:

// ~ line 118 
if (Meteor.isClient 
.... 
if (typeof __meteor_runtime_config__ !== "undefined" && 
    __meteor_runtime_config__.ACCOUNTS_CONNECTION_URL) { 
    // Temporary, internal hook to allow the server to point the client 
    // to a different authentication server. This is for a very 
    // particular use case that comes up when implementing a oauth 
    // server. Unsupported and may go away at any point in time. 
    // 
    // We will eventually provide a general way to use account-base 
    // against any DDP connection, not just one special one. 
    Accounts.connection = DDP.connect(
     __meteor_runtime_config__.ACCOUNTS_CONNECTION_URL) 
    } 
} 

Однако, Мне удалось заставить его использовать мою базу данных, установив переменную среды $ MONGO_URL (которая, как я полагаю, устанавливает соединение по умолчанию, которое используется в пакете учетных записей):

В одном окне терминала я начал mongo on порт 27017

> mongod 

В другом окне, я поставил MONGO_URL и добавил соответствующие пакеты, а затем начал метеор:

> export MONGO_URL=mongodb://localhost:27017/test 
> meteor add accounts-base 
> meteor add accounts-password 
> meteor 

И, наконец, в моем браузере консоли я создал учетную запись:

> Accounts.createUser({username: 'me', password: 'guest'}); 

Затем я подключился к базе данных test в своем экземпляре монго:

> mongo 
    MongoDB shell version: 3.0.1 
    connecting to: test 
> db.users.find() 
    { "_id" : "L3EDrS8FnRymDLhPp", ... "username" : "me" } 

Короче говоря, я думаю, что у вас есть три не-супер-большие варианты:

  • Использование переменной MONGO_URL среды (вероятно, лучший вариант)
  • взламывать счета-базовый пакет, чтобы сделать то, что вы хотите
  • Попробуйте неподдерживаемый ACCOUNTS_CONNECTION_URL переменную, которая может «уйти в любой момент времени»
+0

Я закончил с использованием MONGO_URL.I также обнаружил, что я использовал порт 3001 для некоторого реак сын, поэтому я изменил его на 27017, и все получилось так, как должно. – JoeTidee

+0

@JoePrivett Рад, что все получилось! Я думаю, что 3001 порт Метеор использует для Монго по умолчанию, FWIW (но, похоже, не находит, что в документах, на удивление). –

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

  • Нет связанных вопросов^_^