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:[email protected]:27017/meteor meteor
user:[email protected]
認証が必要ない場合は、コマンドの一部です。
シナリオC:同じMeteorアプリから2番目(3番目など)のDBに接続します
次に、MongoInternals.RemoteCollectionDriver
を使用する必要があります 。 Meteorサーバーの起動時に定義されたデフォルトのDBではない別のデータベースを使用する場合は、アプローチを使用する必要があります。
var database = new MongoInternals.RemoteCollectionDriver('mongodb://user:[email protected]:27017/meteor');
var numberOfDocs = database.open('boxes').find().count();
ボーナス:MongoInternals
を使用しない理由 Mongo.Collection
を使用 ?
ドキュメントに示されているように
Mongo接続をnew Mongo.Collection()
に渡さないでください コマンドですが、別のMeteorインスタンスへの接続のみです。つまり、DDP.connect
を使用する場合 別のサーバーに接続するには、コードを使用できますが、MongoInternals
を混在させないでください。 Mongo.Collection
を使用 -それらは一緒にうまく機能しません。