Як використовувати існуючий MongoDB у проекті Meteor?


84

Скажімо, на деякий час існує запущений сервер MongoDB для клієнта графічного інтерфейсу (від wxPython ).

Як я можу підключити свій новий проект Meteor до мого вже існуючого MongoDB ?


Dror ( stackoverflow.com/users/460278/dror ) має правильну відповідь нижче: stackoverflow.com/a/12996674/1114274
Mike Graf

Дякую за коментар. Я знаю, що рішення @ Dror набагато офіційне, а не хакерське, але я вже призначив відповідь раніше. Я не зовсім впевнений, що це хороша і допустима поведінка, щоб змінити / оновити "відповідь" тоді?
Дрейк Гуан,

"Ви можете будь-коли змінити, яка відповідь прийнята, або просто не прийняти відповідь". meta.stackexchange.com/a/5235/191226
Mike Graf

1
Велике спасибі, що вказали мені це. Зараз я впевненіша.
Drake Guan

Відповіді:


156

Використовуйте змінну середовища MONGO_URL. Щось на зразок:

export MONGO_URL=mongodb://localhost:27017/your_db

Замініть your_dbна meteorабо будь-яке db, яке ви хочете використовувати.


4
Я застряг. Чи можете ви пояснити, як замінити your_db на "метеор"
Surjith SM

3
зверніть увагу , що це не буде працювати на прод , якщо розгортання на метеора - см stackoverflow.com/questions/21971036 / ...
maxko87

2
@SurjithSM export MONGO_URL=mongodb://localhost:27017/my_database_nameбуде розміщувати дані в базі даних з іменем my_database_name. Він мав на увазі, що якщо ти хочеш, ти можеш це зробити export MONGO_URL=mongodb://localhost:27017/meteor. Думав, я б порадив назвати назву вашої бази даних так само, як і ваш проект.
Бенджамін Крузьє,

1
Чи можна це зробити за допомогою якогось конфігураційного файлу? Пробували з settings.json, і це не спрацює
Kostanos

1
це розбило моє місцеве додаток.
Дебора

14

Ми використовуємо npm:

  • Створіть package.jsonфайл за допомогою npm init, якщо у вас його ще немає.

  • Введіть і змініть наступний рядок у цьому файлі (замінивши всі <...>):

"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
  • Потім ви можете почати метеор простоnpm run meteor

'MONGO_URL' не розпізнається як внутрішня чи зовнішня команда
Абдул Хамід

1
це змінна середовища, переконайтесь, що навколо знака = немає пробілів
malix

9

У коментарях до відповіді Денні Том Війсман рекомендує виправити пакунки / mongo-livedata / mongo_driver.js, рядок 21. Краще місце знаходиться в app / meteor / run.js, рядок 460. Таким чином змінна середовища все ще підбирається, якщо вона присутня , наприклад, під час запуску Meteor на Heroku. Просто змініть монгований монгод: //127.0.0.1 за замовчуванням на місце розташування вашого сервера MongoDB.


4

Ви можете використовувати db.copyDatabase для цього, з застереженням, що є помилка, і ви не можете оновити дані в Meteor. Див. Https://github.com/meteor/meteor/issues/61

Якщо ви використовуєте розробницьку версію Meteor, ви можете перенести дані із запущеного сервера MongoDB, запустивши програму Meteor, а потім виконавши:

mongo --port 3002

Це з’єднає вас із сервером Mongo програми Meteor. Тепер використовуйте db.copyDatabase таким чином:

db.copyDatabase('myappDatabase', 'meteor', 'localhost');

Це скопіює базу даних myappDatabase із сервера MongoDB, що працює на стандартному порту на localhost, на сервер програми Meteor Mongo. Назва бази даних, яку використовує додаток Meteor, - 'meteor'.


2

Просто скопіюйте дані в базу даних Meteor MongoDB - немає причин намагатися підключити Meteor до існуючої бази даних і ризикувати перезаписом речей.

Використовуйте mongoexportдля скидання колекцій окремо, а потім mongoimportдля імпорту файлів у базу даних, названу meteorв екземплярі Meteor MongoDB. Екземпляр Meteor MongoDB працює на порту 3002 з адресою bind_address 127.0.0.1, а файли даних знаходяться у підкаталозі проекту Meteor .meteor/local/db.

Перегляньте документацію, якщо ви не знайомі з імпортом / експортом у MongoDB.


Чи означає це, що ми повинні доставляти метеорний хостинг mongodb замість хостингу іншими способами?
Дрейк Гуан,

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-адресу мого сервера цифрових океанських крапель замість localhost, і це спрацювало:

env: {
      ROOT_URL: 'http://yourdomain.com',
      MONGO_URL: 'mongodb://104.236.24.66:27017/meteor',
      PORT: 3002,
    },

EDIT: використовуйте MUP для розгортання ваших метеорних проектів: https://github.com/zodern/meteor-up

env: {
      ROOT_URL: 'https://www.example.com',
      MONGO_URL: 'mongodb://localhost/meteor',
    },

Mup використовує Docker і "зв’яже" ваші 2 контейнери, таким чином розміщуючи як програму, так і mongo на одній і тій же віртуальній машині (сервері). Ваш mongoDB не повинен бути доступним із загальнодоступної IP-адреси з міркувань безпеки.


де ви це додали?
Gaurav Arya

насправді поганою практикою є використання загальнодоступного IP вашої віртуальної машини для mongoDB, тому я збираюся оновити свою відповідь, щоб використовувати localhost.
Мілеан

0

Провів багато часу і виявив, що для цього потрібні лапки навколо URL-адреси:

export MONGO_URL='mongodb://localhost/meteor'
export MONGO_OPLOG_URL='op log url'

-6

Вам потрібно тримати програму запущеною в одному вікні терміналу, а потім відкрити інше і набрати "meteor mongo", і вона повинна працювати!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.