MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Impossibile ottenere che il pacchetto Accounts-Base punti al database corretto

Guardando direttamente al codice per il pacchetto accounts-base (Meteor v 1.0.4), sembra che non supportino ufficialmente un modo per impostare il database per la raccolta degli utenti. Come puoi vedere dal codice, il server si connette sempre utilizzando il predefinito Meteor.connection:

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

Il Accounts.connection è impostato sopra, ma è esplicitamente non supportato:

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

Tuttavia, sono stato in grado di farlo utilizzare il mio database impostando la variabile di ambiente $MONGO_URL (che credo imposti la connessione predefinita, che viene utilizzata dal pacchetto account):

In una finestra del terminale, ho avviato mongo sulla porta 27017

> mongod

In un'altra finestra, ho impostato MONGO_URL e aggiunto i pacchetti appropriati, quindi ho avviato meteor:

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

E infine nella console del mio browser ho creato un account:

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

Poi mi sono connesso a test database nella mia istanza mongo:

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

In breve, penso che tu abbia tre opzioni non eccezionali:

  • Utilizza il MONGO_URL variabile d'ambiente (probabilmente l'opzione migliore)
  • Hackera il pacchetto account-base per fare quello che vuoi
  • Prova il ACCOUNTS_CONNECTION_URL non supportato variabile, che può 'scomparire in qualsiasi momento'