MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nie można uzyskać pakietu Accounts-Base wskazującego właściwą bazę danych

Patrząc bezpośrednio na kod pakietu accounts-base (Meteor v 1.0.4), wygląda na to, że oficjalnie nie wspierają sposobu ustawiania bazy danych dla kolekcji użytkowników. Jak widać z kodu, serwer zawsze łączy się za pomocą domyślnego Meteor.connection:

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

Accounts.connection jest ustawiony powyżej, ale wyraźnie nie obsługiwane:

// ~ 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)
  }
}

Udało mi się jednak zmusić go do korzystania z mojej bazy danych, ustawiając zmienną środowiskową $MONGO_URL (która, jak sądzę, ustawia domyślne połączenie, które jest używane przez pakiet kont):

W jednym oknie terminala uruchomiłem mongo na porcie 27017

> mongod

W innym oknie ustawiłem MONGO_URL i dodałem odpowiednie pakiety, po czym uruchomiłem meteor:

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

I w końcu w konsoli przeglądarki utworzyłem konto:

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

Następnie połączyłem się z test baza danych w mojej instancji mongo:

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

Krótko mówiąc, myślę, że masz trzy niezbyt świetne opcje:

  • Użyj MONGO_URL zmienna środowiskowa (prawdopodobnie najlepsza opcja)
  • Zhakuj pakiet account-base, aby robić to, co chcesz
  • Wypróbuj nieobsługiwany ACCOUNTS_CONNECTION_URL zmienna, która może „zniknąć w dowolnym momencie”



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Utwórz unikalne pole autoinkrementacji z mangustą

  2. Rozpowszechnianie MongoDB w regionach EC2

  3. MongoDB wyodrębnia wartości z BasicDBObject (Java)

  4. Wyszukiwanie pełnotekstowe MongoDB a Lucene?

  5. Jak korzystać z mangusty findOne