MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Das Accounts-Base-Paket kann nicht auf die richtige Datenbank verweisen

Schauen Sie sich direkt den Code für das Paket accounts-base an (Meteor v 1.0.4), es sieht so aus, als ob sie keine Möglichkeit offiziell unterstützen, die Datenbank für die Benutzersammlung festzulegen. Wie Sie dem Code entnehmen können, verbindet sich der Server immer mit der Standard-Meteor.connection:

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

Die Accounts.connection oben gesetzt, aber ausdrücklich nicht unterstützt:

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

Ich konnte es jedoch dazu bringen, meine Datenbank zu verwenden, indem ich die Umgebungsvariable $MONGO_URL setzte (von der ich glaube, dass sie die Standardverbindung festlegt, die vom Kontenpaket verwendet wird):

In einem Terminalfenster habe ich Mongo auf Port 27017 gestartet

> mongod

In einem anderen Fenster habe ich die MONGO_URL gesetzt und die entsprechenden Pakete hinzugefügt, dann meteor gestartet:

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

Und schließlich habe ich in meiner Browserkonsole ein Konto erstellt:

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

Dann habe ich mich mit test verbunden Datenbank in meiner Mongo-Instanz:

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

Kurz gesagt, ich denke, Sie haben drei nicht so tolle Optionen:

  • Verwenden Sie die MONGO_URL Umgebungsvariable (wahrscheinlich beste Option)
  • Hack das Accounts-Base-Paket, um zu tun, was du willst
  • Probieren Sie die nicht unterstützte ACCOUNTS_CONNECTION_URL aus Variable, die 'jederzeit verschwinden' kann