Meteor の実行中に、Python クライアントから Meteor の MongoDB にアクセスしたいと考えています。
Meteor のデータベースがロックされているため、mongod を起動できません。
別のクライアントからデータベースにアクセスするにはどうすればよいですか?
meteor
コマンドはクリーンな方法を提供します。実行中の mongod の URL を取得するには:
meteor mongo -U
Pythonから解析できます。
コマンドを実行すると、Meteor はポート 3002 で mongod を起動しmeteor
、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クライアントを接続してください。パイソンでは:
>>> import pymongo
>>> con = pymongo.Connection(host='127.0.0.1', port=3002)
>>> con.database_names()
[u'meteor', u'local']
更新: 残念ながら、この方法で mongo に直接変更を加えても、アプリには反映されませんが、変更はページ全体 (再) 読み込みに反映されます。
Meteor の導入手順を使用する
コマンドは次のようになります。
PORT=3000 MONGO_URL=mongodb://localhost:27017/myapp node bundle/main.js
次を使用して、サーバー側のコード内から見つけることもできます。
process.env.MONGO_URL
実行時にこの環境変数を設定しなくても、デフォルトに設定されます。これは、内部で見つかった方法のようです (packages/mongo/remote_collection_driver.js)
によって与えられたものはmeteor mongo -U
、デフォルトのドメイン/ IP とデータベース名を再構築するようですが、ファイルに保存されているポートを使用します。
これをサーバー フォルダーの任意の場所に配置し、コマンド ラインから読み取ることができます。
console.log('db url: ' + process.env.MONGO_URL);
テストデータベースを使用していて、ライブデータを上書きしていないことをセレンテストで再確認するために、それを表示するWebページを設定しました。
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
````