しばらくの間、GUIクライアント用に(wxPythonによって)実行中のMongoDBサーバーがあるとしましょう。
新しいMeteorプロジェクトを既存のMongoDBに接続するにはどうすればよいですか?
しばらくの間、GUIクライアント用に(wxPythonによって)実行中のMongoDBサーバーがあるとしましょう。
新しいMeteorプロジェクトを既存のMongoDBに接続するにはどうすればよいですか?
回答:
環境変数MONGO_URLを使用します。何かのようなもの:
export MONGO_URL=mongodb://localhost:27017/your_db
使用したいdbyour_db
と交換してmeteor
ください。
export MONGO_URL=mongodb://localhost:27017/my_database_name
は、という名前のデータベースにデータを配置しますmy_database_name
。彼はあなたが望むならあなたができることを意味しましたexport MONGO_URL=mongodb://localhost:27017/meteor
。データベース名をプロジェクトと同じ名前にすることをお勧めします。
私たちは使用しますnpm
:
まだ持っていない場合は、をpackage.json
使用してファイルを作成しますnpm init
。
そのファイルに次の行を入力して変更します(すべての<...>
'を置き換えます)。
"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
npm run meteor
ではトムWijsmanは推奨していますダニーの答えにコメントパッケージ/モンゴ-livedata / mongo_driver.jsにパッチを適用、ライン21 Aより良い場所に存在する場合、環境変数がまだピックアップされ、この方法でライン460、アプリ/流星/ run.jsであります、HerokuでMeteorを実行する場合など。デフォルトのハードコードされたmongodb://127.0.0.1をMongoDBサーバーの場所に変更するだけです。
db.copyDatabaseを使用してこれを行うことができますが、バグがあり、Meteorのデータを更新できないという警告があります。https://github.com/meteor/meteor/issues/61を参照してください
Meteorの開発バージョンを使用している場合は、Meteorアプリを起動してから、実行中のMongoDBサーバーからデータを転送できます。
mongo --port 3002
これにより、MeteorアプリのMongoサーバーに接続されます。次に、db.copyDatabaseを次のように使用します。
db.copyDatabase('myappDatabase', 'meteor', 'localhost');
これにより、データベースmyappDatabaseがローカルホストの標準ポートで実行されているMongoDBサーバーからMeteorアプリのMongoサーバーにコピーされます。Meteorアプリが使用するデータベース名は「meteor」です。
データをMeteorMongoDBデータベースにコピーするだけです。Meteorを既存のデータベースに接続しようとして、上書きするリスクはありません。
使用しmongoexport
、その後、個別にあなたのコレクションをダンプするmongoimport
という名前のデータベースにファイルをインポートするためにmeteor
流星のMongoDBインスタンスに。Meteor MongoDBインスタンスは、bind_address 127.0.0.1のポート3002で実行され、データファイルはMeteorプロジェクトサブディレクトリにあり.meteor/local/db
ます。
MongoDBでのインポート/エクスポートに慣れていない場合は、ドキュメントを参照してください。
app/lib/mongo_runner.js
それを起動する方法を決定します(コードを起動する必要さえないかもしれないので、それを無効にする方法を調べてください)。それへの接続は内部packages/mongo-livedata/mongo_driver.js
で発生しているようです。21行目のurlパラメータを変更するだけでよいと思います。その値を知りたい場合は、そのconsole.log(url);
前の行に挿入し、Meteorを再起動して、Meteorの出力を注意深く観察してください。あなたは確かに...トリガーにそれのためにアプリに一度流星を呼ぶのです作る
console.log(url);
て情報を入手しました!私はまだ、私はそれがコミュニティに支援を提供し、あるいは少なくとも信じている原因あなたは仕事の周りの答えとして完全としてこれを作るために〜流星に慣れていない私のような人々を提案します
私がしたのは、ローカルホストの代わりにデジタル海洋液滴サーバーのIPを追加することだけで、それは機能しました:
env: {
ROOT_URL: 'http://yourdomain.com',
MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
PORT: 3002,
},
編集:MUPを使用してmeteorプロジェクトをデプロイします:https://github.com/zodern/meteor-up
env: {
ROOT_URL: 'https://www.example.com',
MONGO_URL: 'mongodb://localhost/meteor',
},
MupはDockerを使用し、2つのコンテナーを「リンク」するため、アプリとmongoの両方を同じVM(サーバー)でホストします。セキュリティ上の理由から、mongoDBにパブリックIPからアクセスできないようにする必要があります。