Как получить доступ к MongoDB Meteor от другого клиента, пока Meteor работает?


Я хотел бы получить доступ к MongoDB Meteor из клиента Python,в то время как метеор работает.

Я не могу запустить mongod, потому что база данных Meteor заблокирована.

Как мне получить доступ к базе данных с другого клиента?

6 53

6 ответов:

The обеспечивает чистый способ. Чтобы получить URL для запущенного mongod:

meteor mongo -U

который вы можете разобрать из python.

Meteor запускает mongod для вас на порту 3002, когда вы запускаете meteor команда и сохраняет файл данных mongo в .meteor/local/db

вывод ps aux | grep 'mongod' показывает команду mongod, которую использует meteor:

/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 таким образом не будет отражать жить в приложении, но изменения будут отражены на полной странице (re)загрузки.

использовать инструкции по развертыванию Метеор

команда будет выглядеть так:

   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 и db-name, но использовать порт, хранящийся в файле.

вы можете поместить это в любом месте в папке сервера, и прочитать его из командная строка.

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

Я настроил веб-страницу для ее отображения, чтобы дважды проверить тесты 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

``

в отношении 10-секундной задержки обновлений: хвост MongoDB oplog! Больше информации о том, как это сделать здесь:

http://meteorhacks.com/lets-scale-meteor.html

убедитесь, что вы устанавливаете смарт-коллекции и используете их (создайте свои коллекции с помощью Meteor.SmartCollection вместо Meteor.Сборник) и вы найдете обновления, по существу немедленно.