MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Impossible d'obtenir que le package Accounts-Base pointe vers la bonne base de données

En regardant directement sur le code du package accounts-base (Meteor v 1.0.4), il semble qu'ils ne prennent pas officiellement en charge un moyen de définir la base de données pour la collection d'utilisateurs. Comme vous pouvez le voir dans le code, le serveur se connecte toujours en utilisant la Meteor.connection par défaut :

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

La Accounts.connection est défini ci-dessus, mais ce n'est explicitement pas pris en charge :

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

Cependant, j'ai pu le faire utiliser ma base de données en définissant la variable d'environnement $MONGO_URL (qui, je crois, définit la connexion par défaut, qui est utilisée par le package de comptes) :

Dans une fenêtre de terminal, j'ai démarré mongo sur le port 27017

> mongod

Dans une autre fenêtre, j'ai défini le MONGO_URL et ajouté les packages appropriés, puis j'ai démarré meteor :

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

Et enfin dans la console de mon navigateur j'ai créé un compte :

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

Puis je me suis connecté à test base de données dans mon instance mongo :

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

En bref, je pense que vous avez trois options pas super géniales :

  • Utilisez MONGO_URL variable d'environnement (probablement la meilleure option)
  • Hackez le package accounts-base pour faire ce que vous voulez
  • Essayez l'ACCOUNTS_CONNECTION_URL non pris en charge variable, qui peut "disparaître à tout moment"