sql >> データベース >  >> NoSQL >> MongoDB

正しいデータベースを指すようにAccounts-Baseパッケージを取得できません

    アカウントベースパッケージのコードを直接 (Meteor v 1.0.4)、ユーザーコレクションのデータベースを設定する方法を公式にサポートしていないようです。コードからわかるように、サーバーは常にデフォルトのMeteor.connectionを使用して接続します:

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

    Accounts.connection 上記で設定されていますが、明示的にではありません サポート:

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

    ただし、$ MONGO_URL環境変数(アカウントパッケージで使用されるデフォルトの接続を設定すると思われます)を設定することで、データベースを使用できるようになりました。

    1つのターミナルウィンドウで、ポート27017でmongoを開始しました

    > mongod
    

    別のウィンドウで、MONGO_URLを設定し、適切なパッケージを追加してから、meteorを開始しました:

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

    そして最後に、ブラウザコンソールでアカウントを作成しました:

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

    次に、testに接続しました 私のmongoインスタンスのデータベース:

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

    要するに、私はあなたが3つのそれほど素晴らしいオプションを持っていないと思います:

    • MONGO_URLを使用します 環境変数(おそらく最良のオプション)
    • アカウントベースパッケージをハックして、やりたいことを実行します
    • サポートされていないACCOUNTS_CONNECTION_URLを試してみてください 変数。「いつでもなくなる可能性があります」



    1. MongooseError:接続中に複数回 `mongoose.connect()`することはできません

    2. MongoDBGridFSVS直接ディスクIO

    3. Elem matchはすべてのデータを返しますが、必要なのは選択したデータのみです

    4. mongodbとnodejsのタイプ番号のフィールドをデクリメントします