Meteor 프로젝트에서 기존 MongoDB를 어떻게 사용합니까?


84

잠시 동안 GUI 클라이언트 ( wxPython ) 용으로 실행중인 MongoDB 서버가 있다고 가정 해 보겠습니다 .

새 Meteor 프로젝트를 기존 MongoDB에 어떻게 연결할 수 있습니까?



의견 주셔서 감사합니다. @Dror의 솔루션이 해킹 대신 훨씬 공식적이라는 것을 알고 있지만 이전에 이미 답변을 할당했습니다. "대답"을 변경 / 업데이트하는 것이 좋고 허용 가능한 동작인지 확실하지 않습니까?
Drake Guan

"언제든지 어떤 답변을 수락할지 변경하거나 단순히 답변을 수락하지 않을 수 있습니다." meta.stackexchange.com/a/5235/191226
Mike Graf

1
이것을 지적 해 주셔서 감사합니다. 이제 더 자신감이 생겼습니다.
Drake Guan

답변:


156

환경 변수 MONGO_URL을 사용하십시오. 다음과 같은 것 :

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

교체 your_dbmeteor또는 사용하려는을 DB 뭐든간에.


4
막혔어요. 당신은 "유성"로 your_db 교체하는 방법을 설명 할 수
Surjith SM에게

3
meteor에 배포하는 경우 prod에서 작동하지 않습니다. 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. 프로젝트와 동일한 데이터베이스 이름을 지정하는 것이 좋습니다.
Benjamin Crouzier 2014-08-25

1
일부 구성 파일로 수행 할 수 있습니까? settings.json으로 시도하고 작동하지 않습니다
Kostanos

1
이것은 내 로컬 앱에서 도대체 추락했습니다.
Deborah

14

우리는 다음을 사용합니다 npm:

  • 아직없는 경우를 사용 하여 package.json파일을 만듭니다 npm init.

  • 해당 파일에 다음 줄을 입력하고 수정합니다 (의 모두 대체 <...>).

"scripts": {"meteor": "MONGO_URL=mongodb://<USER>:<PASSWORD>@<SERVER>:<PORT>/<DB> meteor"}
  • 그런 다음 시작 유성 단지로npm run meteor

'MONGO_URL'은 내부 또는 외부 명령으로 인식되지 않습니다
Abdul Hameed

1
이 환경 변수입니다, 확인 = 기호 주위에 공백이 없는지 확인
malix

9

에서 대니의 대답 톰 Wijsman에 대한 의견 권장 패키지를 패치 / 몽고-livedata / mongo_driver.js는 라인 (21) 더 좋은 장소는 응용 프로그램 / 유성 / run.js에, 라인 (460)이 방법은 환경 변수가 여전히 존재하는 경우에 포착됩니다 , 예를 들어 Heroku에서 Meteor를 실행할 때. 기본 하드 코딩 된 mongodb : //127.0.0.1을 MongoDB 서버의 위치로 변경하기 만하면됩니다.


4

db.copyDatabase를 사용하여이 작업을 수행 할 수 있습니다. 버그가 있으며 Meteor에서 데이터를 업데이트 할 수 없습니다. 참조 https://github.com/meteor/meteor/issues/61를

Meteor의 개발 버전을 사용하는 경우 Meteor 앱을 시작하고 다음을 수행하여 실행중인 MongoDB 서버에서 데이터를 전송할 수 있습니다.

mongo --port 3002

Meteor 앱의 Mongo 서버에 연결됩니다. 이제 다음과 같이 db.copyDatabase를 사용하십시오.

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

이것은 localhost의 표준 포트에서 실행되는 MongoDB 서버에서 Meteor 앱 Mongo 서버로 myappDatabase 데이터베이스를 복사합니다. Meteor 앱이 사용하는 데이터베이스 이름은 'meteor'입니다.


2

데이터를 Meteor MongoDB 데이터베이스에 복사하기 만하면됩니다. Meteor를 기존 데이터베이스에 연결하여 덮어 쓸 위험이 있습니다.

사용 mongoexport후, 개별적으로 컬렉션을 덤프 mongoimport라는 이름의 데이터베이스로 파일을 가져 meteor유성 MongoDB의 인스턴스에. Meteor MongoDB 인스턴스는 bind_address가 127.0.0.1 인 포트 3002에서 실행되며 데이터 파일은 Meteor 프로젝트 하위 디렉토리에 .meteor/local/db있습니다.

MongoDB의 가져 오기 / 내보내기에 익숙하지 않은 경우 설명서를 참조하세요 .


그것은 우리가 다른 방법으로 호스팅하는 대신 유성에 호스팅하는 mongodb를 제공해야 함을 의미합니까?
Drake Guan

2
@Drake : Meteor를 데이터베이스와 함께 작동하도록 조정할 수 없다면. app/lib/mongo_runner.js실행 방법을 결정합니다 (실행 코드가 필요하지 않을 수도 있으므로 비활성화하는 방법을 살펴보십시오). 연결은 내부 packages/mongo-livedata/mongo_driver.js에서 발생하는 것 같습니다 . 21 행에서 url 매개 변수를 간단히 변경할 수 있다고 생각합니다. 값을 알고 싶다면 그 console.log(url);앞에있는 행에 삽입 하고 Meteor를 다시 시작하고 Meteor 출력을 자세히 살펴보십시오. 만들기는 확실히 당신은 참 ... 트리거에 대한 앱에서 유성을 한 번 부르지
타마라 Wijsman에게

@Drake : 내 의견을 답변으로 남기고 싶다면 (당신에게 효과가 있다면) 알려주세요.
Tamara Wijsman

@TomWijsman : 나는 시도 console.log(url);하고 정보를 얻었다! 나는 이것이 커뮤니티에 도움을 제공한다고 믿거 나 적어도 아직 유성에 익숙하지 않은 사람들에게 도움을 제공한다고 믿기 때문에 이것을 해결 방법으로 완벽하게 만들 것을 제안 할 것입니다 ~
Drake Guan

내보내기 / 가져 오기 명령보다 mongochef를 사용하여 데이터를 복사하고 붙여 넣는 것이 훨씬 쉽습니다. 3t.io/mongochef
최대 스

0

내가 한 것은 localhost 대신 Digital ocean droplet 서버의 IP를 추가하는 것뿐이었습니다.

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

편집 : MUP를 사용하여 유성 프로젝트 배포 : https://github.com/zodern/meteor-up

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

Mup은 Docker를 사용하고 2 개의 컨테이너를 "연결"하여 동일한 VM (서버)에서 앱과 mongo를 모두 호스팅합니다. 보안상의 이유로 mongoDB는 공용 IP에서 액세스 할 수 없습니다.


이것을 어디에 추가 했습니까?
Gaurav Arya

mongoDB에 VM의 공용 IP를 사용하는 것은 실제로 나쁜 습관입니다.
Milean

0

많은 시간을 보냈고 URL 주위에 따옴표가 필요하다는 것을 알았습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.