sql >> Databáze >  >> NoSQL >> MongoDB

Balíček Accounts-Base nelze získat tak, aby ukazoval na správnou databázi

Podívejte se přímo na kód pro základní balíček účtů (Meteor v 1.0.4), vypadá to, že oficiálně nepodporují způsob, jak nastavit databázi pro kolekci uživatelů. Jak můžete vidět z kódu, server se vždy připojuje pomocí výchozího Meteor.connection:

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

Accounts.connection je nastaveno výše, ale výslovně není podporováno:

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

Podařilo se mi jej však přimět k použití mé databáze nastavením proměnné prostředí $MONGO_URL (o které se domnívám, že nastavuje výchozí připojení, které využívá balíček účtů):

V jednom okně terminálu jsem spustil mongo na portu 27017

> mongod

V dalším okně jsem nastavil MONGO_URL a přidal příslušné balíčky a poté spustil meteor:

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

A nakonec jsem si v konzoli prohlížeče vytvořil účet:

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

Poté jsem se připojil k test databáze v mé mongo instanci:

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

Stručně řečeno, myslím, že máte tři ne příliš skvělé možnosti:

  • Použijte MONGO_URL proměnná prostředí (pravděpodobně nejlepší možnost)
  • Nabourejte se do základního balíčku účtů, abyste mohli dělat, co chcete
  • Vyzkoušejte nepodporovanou ACCOUNTS_CONNECTION_URL proměnná, která může „v kterémkoli okamžiku zmizet“



  1. Node.js ovladač mongodb async/wait dotazy

  2. Jak seskupit záznamy na základě prvků pole pomocí MongoDB

  3. MongoDB preferovalo schéma pro vložené kolekce. dokumenty vs. pole

  4. MongoDB:dotazy na rozsah na čas vložení s _id a ObjectID