Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 2

Команда meteor обеспечивает чистый способ. Чтобы получить URL-адрес работающего mongod:

meteor mongo -U

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

Ответ 3

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

Вывод из ps aux | grep 'mongod' показывает команду 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']

UPDATE: к сожалению, внесение изменений непосредственно в mongo таким образом не будет отображаться в реальном времени в приложении, но изменения отразятся на полной загрузке страницы (re).

Ответ 4

Вы также можете найти его на стороне сервера, используя:

process.env.MONGO_URL

Даже если вы не устанавливаете эту переменную среды при запуске, она получает значение по умолчанию. Кажется, что это происходит внутри (пакеты/mongo/remote_collection_driver.js)

Тот, который задан meteor mongo -U, похоже, восстанавливает домен /ip и имя db по умолчанию, но использует порт, хранящийся в файле.

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

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

Я установил веб-страницу, чтобы отобразить ее, чтобы дважды проверить в тестах селена, что мы используем тестовую базу данных, а не переписывать данные в реальном времени.

Ответ 5

А вот оболочка script, чтобы получить 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

`` ``

Ответ 6

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

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

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