Спасибо за комментарий. Я знаю, что решение @Dror является более официальным, а не хакерским, но я уже давал ответ раньше. Я не совсем уверен, что это хорошее и допустимое поведение, чтобы изменить / обновить "ответ" тогда?
Я застрял. Можете ли вы объяснить, как заменить your_db на "meteor"
Сурджит С.М.
3
обратите внимание, что это НЕ будет работать на продукте при развертывании на
метеоре
2
@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_nameпоместит данные в базу данных с именем my_database_name. Он имел в виду, что если хочешь, можешь export MONGO_URL=mongodb://localhost:27017/meteor. Подумал, я бы посоветовал назвать вашу базу данных таким же именем, как и ваш проект.
Бенджамин Крузье
1
Можно ли это сделать с помощью какого-нибудь конфигурационного файла? Пробовал с settings.json, но ничего не
вышло
1
это разбило мое локальное приложение.
Deborah
14
Мы используем npm:
Создайте package.jsonфайл npm init, если у вас его еще нет.
Введите и измените следующую строку в этом файле (заменив все <...>символы):
«MONGO_URL» не распознается как внутренняя или внешняя команда
Абдул Хамид
1
это переменная среды, убедитесь, что вокруг знака = нет пробелов
malix
9
В комментариях к ответу Дэнни Том Вийсман рекомендует исправлять пакеты / mongo-liveata / mongo_driver.js, строка 21. Лучшее место находится в app / meteor / run.js, строка 460. Таким образом, переменная окружения по-прежнему выбирается, если она есть. , например, при запуске Meteor на Heroku. Просто измените жестко заданный по умолчанию mongodb: //127.0.0.1 на местоположение вашего сервера MongoDB.
Для этого вы можете использовать db.copyDatabase, но с оговоркой, что есть ошибка и вы не можете обновить данные в Meteor. См. Https://github.com/meteor/meteor/issues/61
Если вы используете разрабатываемую версию Meteor, вы можете передавать данные с работающего сервера MongoDB, запустив приложение Meteor, а затем выполнив:
mongo --port 3002
Это подключит вас к серверу Mongo приложения Meteor. Теперь используйте db.copyDatabase следующим образом:
Это скопирует базу данных myappDatabase с сервера MongoDB, работающего на стандартном порте на localhost, на сервер Mongo приложения Meteor. Приложение Meteor использует имя базы данных «метеор».
Просто скопируйте данные в базу данных Meteor MongoDB - нет причин пытаться подключить Meteor к существующей базе данных и рисковать перезаписать данные.
Используйте mongoexportдля сброса ваших коллекций по отдельности, а затем mongoimportдля импорта файлов в базу данных, meteorуказанную в экземпляре Meteor MongoDB. Экземпляр Meteor MongoDB работает на порту 3002 с bind_address 127.0.0.1, а файлы данных находятся в подкаталоге проекта Meteor .meteor/local/db.
См. Документацию, если вы не знакомы с импортом / экспортом в MongoDB.
Означает ли это, что мы должны поставить хостинг mongodb на Meteor вместо хостинга другими способами?
Дрейк Гуан
2
@Drake: Если вы не можете настроить Meteor для работы с вашей базой данных. app/lib/mongo_runner.jsрешает, как его запустить (возможно, вам даже не потребуется запускать код, поэтому узнайте, как его отключить). Соединение с ним, кажется, происходит внутри packages/mongo-livedata/mongo_driver.js, я думаю, вы можете просто изменить параметр url в строке 21. Если вы хотите узнать его значение, вставьте console.log(url);в строку перед этим, перезапустите Meteor и внимательно следите за выходом Meteor. Убедитесь, что вы действительно один раз вызываете Meteor в своем приложении, чтобы оно
сработало
@Drake: Если вы хотите, чтобы я разместил свой комментарий в качестве ответа (если он сработал для вас), дайте мне знать.
Тамара Вейсман
@TomWijsman: Я попробовал console.log(url);и получил информацию! Я предлагаю вам сделать это настолько полным, как обходной ответ, потому что я считаю, что он действительно помогает сообществу или, по крайней мере, людям вроде меня, еще не знакомым с метеором ~
Дрейк Гуан
чертовски проще использовать mongochef для копирования и вставки данных, чем команды экспорта / импорта. 3t.io/mongochef
Макс Ходжес
0
Все, что я сделал, это добавил IP моего сервера Digital Ocean Droplet вместо localhost, и это сработало:
Mup использует Docker и "связывает" ваши 2 контейнера, таким образом размещая приложение и mongo на одной виртуальной машине (сервере). Ваш mongoDB не должен быть доступен с общедоступного IP-адреса из соображений безопасности.
на самом деле плохая практика использовать публичный IP-адрес вашей виртуальной машины для mongoDB, я собираюсь обновить свой ответ, чтобы использовать localhost.
Milean
0
Потратил много времени и обнаружил, что для этого нужны кавычки вокруг URL:
Ответы:
Используйте переменную окружения MONGO_URL. Что-то вроде:
Замените
your_db
наmeteor
любой другой db, который вы хотите использовать.источник
export MONGO_URL=mongodb://localhost:27017/my_database_name
поместит данные в базу данных с именемmy_database_name
. Он имел в виду, что если хочешь, можешьexport MONGO_URL=mongodb://localhost:27017/meteor
. Подумал, я бы посоветовал назвать вашу базу данных таким же именем, как и ваш проект.Мы используем
npm
:Создайте
package.json
файлnpm init
, если у вас его еще нет.Введите и измените следующую строку в этом файле (заменив все
<...>
символы):npm run meteor
источник
В комментариях к ответу Дэнни Том Вийсман рекомендует исправлять пакеты / mongo-liveata / mongo_driver.js, строка 21. Лучшее место находится в app / meteor / run.js, строка 460. Таким образом, переменная окружения по-прежнему выбирается, если она есть. , например, при запуске Meteor на Heroku. Просто измените жестко заданный по умолчанию mongodb: //127.0.0.1 на местоположение вашего сервера MongoDB.
источник
Для этого вы можете использовать db.copyDatabase, но с оговоркой, что есть ошибка и вы не можете обновить данные в Meteor. См. Https://github.com/meteor/meteor/issues/61
Если вы используете разрабатываемую версию Meteor, вы можете передавать данные с работающего сервера MongoDB, запустив приложение Meteor, а затем выполнив:
Это подключит вас к серверу Mongo приложения Meteor. Теперь используйте db.copyDatabase следующим образом:
Это скопирует базу данных myappDatabase с сервера MongoDB, работающего на стандартном порте на localhost, на сервер Mongo приложения Meteor. Приложение Meteor использует имя базы данных «метеор».
источник
Просто скопируйте данные в базу данных Meteor MongoDB - нет причин пытаться подключить Meteor к существующей базе данных и рисковать перезаписать данные.
Используйте
mongoexport
для сброса ваших коллекций по отдельности, а затемmongoimport
для импорта файлов в базу данных,meteor
указанную в экземпляре Meteor MongoDB. Экземпляр Meteor MongoDB работает на порту 3002 с bind_address 127.0.0.1, а файлы данных находятся в подкаталоге проекта Meteor.meteor/local/db
.См. Документацию, если вы не знакомы с импортом / экспортом в MongoDB.
источник
app/lib/mongo_runner.js
решает, как его запустить (возможно, вам даже не потребуется запускать код, поэтому узнайте, как его отключить). Соединение с ним, кажется, происходит внутриpackages/mongo-livedata/mongo_driver.js
, я думаю, вы можете просто изменить параметр url в строке 21. Если вы хотите узнать его значение, вставьтеconsole.log(url);
в строку перед этим, перезапустите Meteor и внимательно следите за выходом Meteor. Убедитесь, что вы действительно один раз вызываете Meteor в своем приложении, чтобы оноconsole.log(url);
и получил информацию! Я предлагаю вам сделать это настолько полным, как обходной ответ, потому что я считаю, что он действительно помогает сообществу или, по крайней мере, людям вроде меня, еще не знакомым с метеором ~Все, что я сделал, это добавил IP моего сервера Digital Ocean Droplet вместо localhost, и это сработало:
РЕДАКТИРОВАТЬ: используйте MUP для развертывания ваших метеорных проектов: https://github.com/zodern/meteor-up
Mup использует Docker и "связывает" ваши 2 контейнера, таким образом размещая приложение и mongo на одной виртуальной машине (сервере). Ваш mongoDB не должен быть доступен с общедоступного IP-адреса из соображений безопасности.
источник
Потратил много времени и обнаружил, что для этого нужны кавычки вокруг URL:
источник
Вам нужно, чтобы ваше приложение работало в одном окне терминала, затем откройте другое и введите «meteor mongo», и оно должно работать!
источник