web-dev-qa-db-ja.com

Meteorの実行中に、別のクライアントからMeteorのMongoDBにアクセスするにはどうすればよいですか?

MeteorのMongoDBにPythonクライアント、Meteorの実行中)からアクセスしたいと思います。

Meteorのデータベースがロックされているため、mongodを起動できません。

別のクライアントからデータベースにアクセスするにはどうすればよいですか?

54
Joseph Turian

Meteorの展開手順 を使用します

コマンドは次のようになります。

   PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
6
Joseph Turian

meteorコマンドはクリーンな方法を提供します。実行中のmongodのURLを取得するには:

meteor mongo -U

pythonから解析できます。

69
debergalis

Meteorは、meteorコマンドを実行するとポート3002でmongodを起動し、mongoデータファイルを.meteor/local/dbに保存します

ps aux | grep 'mongod'からの出力は、meteorが使用するmongodコマンドを示しています。

/usr/local/meteor/mongodb/bin/mongod --bind_ip 127.0.0.1 --smallfiles --port 3002 --dbpath /path/to/your/project/.meteor/local/db

したがって、適宜、mongoクライアントを接続してください。 Pythonの場合:

>>> import pymongo
>>> con = pymongo.Connection(Host='127.0.0.1', port=3002)
>>> con.database_names()
[u'meteor', u'local']

更新:残念ながら、この方法でmongoに直接変更を加えてもアプリのライブは反映されませんが、変更はページ全体の(再)ロードに反映されます。

37
danny

次を使用して、サーバー側のコード内から見つけることもできます。

process.env.MONGO_URL

実行時にこの環境変数を設定しなくても、デフォルトに設定されます。これは内部的にどのように検出されるかのようです(packages/mongo/remote_collection_driver.js)

1つはmeteor mongo -Uはデフォルトのdomain/ipおよびdb-nameを再構築するようですが、ファイルに保存されているポートを使用します。

これをサーバーフォルダーの任意の場所に配置し、コマンドラインから読み取ることができます。

console.log('db url: ' + process.env.MONGO_URL);

Webページをセットアップして、テストデータベースを使用しているSeleniumテストを再確認し、ライブデータを上書きしないように表示します。

2
Alex028502

そして、Mongo URIとMongo Databaseを取得するシェルスクリプト:

#!/bin/bash -eux

read -s -p "Enter Password: " password

cmd=$(meteor mongo --url myapp.meteor.com << ENDPASS
$password
ENDPASS)
mongo_uri=$(echo $cmd | cut -f2 -d" ")
mongo_db=$(echo $mongo_uri | cut -d/ -f 4)

#my_client_command_with MONGODB_URI=$mongo_uri MONGO_DB=$mongo_db

``

0
Pierre Ozoux