developer tip

Meteor가 실행되는 동안 다른 클라이언트에서 Meteor의 MongoDB에 어떻게 액세스합니까?

optionbox 2021. 1. 11. 08:04
반응형

Meteor가 실행되는 동안 다른 클라이언트에서 Meteor의 MongoDB에 어떻게 액세스합니까?


Meteor가 실행되는 동안 Python 클라이언트에서 Meteor의 MongoDB에 액세스하고 싶습니다 .

Meteor의 데이터베이스가 잠겨 있기 때문에 mongod를 시작할 수 없습니다.

다른 클라이언트에서 데이터베이스에 어떻게 액세스합니까?


meteor명령은 깨끗한 방법을 제공합니다. 실행중인 mongod의 URL을 얻으려면 :

meteor mongo -U

파이썬에서 파싱 할 수 있습니다.


Meteor는 meteor명령 을 실행할 때 포트 3002에서 mongod를 시작하고 mongo 데이터 파일을.meteor/local/db

의 출력은 ps aux | grep 'mongod'meteor가 사용하는 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 클라이언트를 연결하십시오. 파이썬에서 :

>>> import pymongo
>>> con = pymongo.Connection(host='127.0.0.1', port=3002)
>>> con.database_names()
[u'meteor', u'local']

업데이트 : 불행히도 이런 식으로 mongo에서 직접 변경하면 앱에 실시간으로 반영되지 않지만 변경 사항은 전체 페이지 (재)로드에 반영됩니다.


사용 유성 배포 지침

명령은 다음과 같습니다.

   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);

테스트 데이터베이스를 사용하고 라이브 데이터를 덮어 쓰지 않는 셀레늄 테스트를 다시 확인하도록 웹 페이지를 표시하도록 설정했습니다.


그리고 여기 Mongo URI 및 Mongo 데이터베이스를 가져 오는 쉘 스크립트 :

#!/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.Collection 대신 Meteor.SmartCollection을 사용하여 컬렉션 인스턴스화). 업데이트가 본질적으로 즉각적임을 알 수 있습니다.

참조 URL : https://stackoverflow.com/questions/10293781/how-do-i-access-meteors-mongodb-from-another-client-while-meteor-is-running

반응형