sql >> Base de Datos >  >> NoSQL >> MongoDB

No se puede obtener el paquete Accounts-Base para apuntar a la base de datos correcta

Buscando directamente en el código para el paquete base de cuentas (Meteor v 1.0.4), parece que no admiten oficialmente una forma de configurar la base de datos para la colección de usuarios. Como puede ver en el código, el servidor siempre se conecta usando la conexión Meteor predeterminada:

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

La Accounts.connection se establece arriba, pero explícitamente no compatible:

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

Sin embargo, pude hacer que usara mi base de datos configurando la variable de entorno $MONGO_URL (que creo que establece la conexión predeterminada, que es utilizada por el paquete de cuentas):

En una ventana de terminal, inicié mongo en el puerto 27017

> mongod

En otra ventana, configuré MONGO_URL y agregué los paquetes apropiados, luego inicié meteor:

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

Y finalmente en la consola de mi navegador creé una cuenta:

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

Luego me conecté a test base de datos en mi instancia de mongo:

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

En resumen, creo que tienes tres opciones no muy buenas:

  • Utilice el MONGO_URL variable de entorno (probablemente la mejor opción)
  • Hackea el paquete base de cuentas para hacer lo que quieras
  • Pruebe la ACCOUNTS_CONNECTION_URL no admitida variable, que puede 'desaparecer en cualquier momento'