Meteorを使用してMongoDBに接続するにはどうすればよいですか?
シナリオA:組み込みのDBをデフォルトとして使用する
これはあなたがしたことよりもはるかに簡単です。 meteorを実行するとき 実際には、MeteorサーバーでDBを起動します。ここで、Meteorはポート3000でリッスンし、データベースはポート3001でリッスンします。Meteorアプリはすでにポート3001でこのデータベースに接続されており、meteorという名前のデータベースを使用します。 。 MongoInternals.RemoteCollectionDriverにフォールバックする必要はまったくありません。 。そのコードを削除して、次のように変更するだけです:
Boxes = new Mongo.Collection("boxes"); // use default MongoDB connection
シナリオB:デフォルトとして別のDBを使用する
MONGO_URLを使用する 環境変数Meteorサーバーの起動時に接続文字列をMongoDBに設定できます。ローカルポート3001データベースまたは認証されていない接続の代わりに、接続する場所と方法を正確に指定できます。次のようにMeteorサーバーを起動します:
$ MONGO_URL=mongodb://user:example@sqldat.com:27017/meteor meteor
user:example@sqldat.com 認証が必要ない場合は、コマンドの一部です。
シナリオC:同じMeteorアプリから2番目(3番目など)のDBに接続します
次に、MongoInternals.RemoteCollectionDriverを使用する必要があります 。 Meteorサーバーの起動時に定義されたデフォルトのDBではない別のデータベースを使用する場合は、アプローチを使用する必要があります。
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:example@sqldat.com:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
ボーナス:MongoInternalsを使用しない理由 Mongo.Collectionを使用 ?
ドキュメントに示されているように
Mongo接続をnew Mongo.Collection()に渡さないでください コマンドですが、別のMeteorインスタンスへの接続のみです。つまり、DDP.connectを使用する場合 別のサーバーに接続するには、コードを使用できますが、MongoInternalsを混在させないでください。 Mongo.Collectionを使用 -それらは一緒にうまく機能しません。