sql >> Database >  >> NoSQL >> MongoDB

Kan het Accounts-Base-pakket niet naar de juiste database laten verwijzen

direct naar de code voor het accounts-base-pakket kijken (Meteor v 1.0.4), het lijkt erop dat ze officieel geen manier ondersteunen om de database voor de gebruikersverzameling in te stellen. Zoals je aan de code kunt zien, maakt de server altijd verbinding met de standaard Meteor.connection:

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

De Accounts.connection is hierboven ingesteld, maar het is expliciet niet ondersteund:

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

Ik kon het echter mijn database laten gebruiken door de $MONGO_URL-omgevingsvariabele in te stellen (die volgens mij de standaardverbinding instelt, die wordt gebruikt door het accountspakket):

In één terminalvenster startte ik mongo op poort 27017

> mongod

In een ander venster stelde ik de MONGO_URL in en voegde de juiste pakketten toe, en startte toen meteoor:

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

En tot slot heb ik in mijn browserconsole een account aangemaakt:

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

Toen maakte ik verbinding met test database in mijn mongo-instantie:

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

Kortom, ik denk dat je drie niet-super-geweldige opties hebt:

  • Gebruik de MONGO_URL omgevingsvariabele (waarschijnlijk beste optie)
  • Hack het op accounts gebaseerde pakket om te doen wat u wilt
  • Probeer de niet-ondersteunde ACCOUNTS_CONNECTION_URL variabele, die 'op elk moment kan verdwijnen'



  1. MassTransit-saga met Redis-persistentie geeft Method Accpet geen implementatie-uitzondering

  2. Regex voor MongoDB ObjectID

  3. MongoDB logt alle vragen

  4. Mongoose save() werkt de waarde niet bij in een array in het databasedocument