MeteorのMongoDBにPythonクライアント、Meteorの実行中)からアクセスしたいと思います。
Meteorのデータベースがロックされているため、mongodを起動できません。
別のクライアントからデータベースにアクセスするにはどうすればよいですか?
Meteorの展開手順 を使用します
コマンドは次のようになります。
PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
meteor
コマンドはクリーンな方法を提供します。実行中のmongodのURLを取得するには:
meteor mongo -U
pythonから解析できます。
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に直接変更を加えてもアプリのライブは反映されませんが、変更はページ全体の(再)ロードに反映されます。
次を使用して、サーバー側のコード内から見つけることもできます。
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テストを再確認し、ライブデータを上書きしないように表示します。
そして、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
``