NodeJS에서 Mongoose를 이용해서 MongoDB 사용하기
#1 MongoDB 4.2와 RoboT3 연동 오류
어제부터 Docker를 이용해서 MongoDB 4.2를 설치하고 Robo 3T로 접근을 하는데 다음과 같은 오류가 계속 발생하고 있었다.
network error while attempting to run command 'saslstart' on host 'localhost:27017'
검색을 해보았는데 여러 가지 이유가 나와서, 다른 이미지로 설치도 하고 계정을 추가도 해보는 등의 여러 삽질을 하였다. 하지만 해결을 못해서 전전 긍긍 되고 있었는데, 드디어 원인을 알았다.
바로 Robo 3T 버그 였다. 내가 사용하던 1.2.1 에서 발생하는 문제로 1.3.1로 업그레이드 하니 해결 되었다.
문제 해결 이슈
나의 귀중한 하루를 날렸다.
#2 mongoose에서 데이터베이스를 만들지 않고 접근 시도
mongodb 에서 데이터베이스를 만들지 않고 mongoose를 이용해서 해당 데이터 베이스에 접근 하려고 했더니…. 안된다는 삽질을 오전 내내 했다….
그리고 데이터 베이스를 생성 하였으면 꼭 사용자도 생성 해야 한다.
늘 하는 작업인데 Command에서 되니까 그냥 넘어갔었나 보다.
#3 Docker DB 설치
Docker-compose 명령어를 이용해서 DB를 설치 하려고 하는데 ID/PW 셋팅을 안해주면 관리해주기 많이 귀찮다.
docker-compose.yml 파일을 이용하여서 여러 개의 인스턴스를 생성 관리 할 수 있다.
다음은 docker-compose.yml 의 예제이다.
version: '3.1'
services:
mongodb:
image: mongo:4
command: [--auth]
ports:
- "27017:27017"
environment:
MONGO_INITDB_ROOT_USERNAME: <ID>
MONGO_INITDB_ROOT_PASSWORD: <PW>
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: <PW>
WORDPRESS_DB_NAME: <DBNAME>
WORDPRESS_DB_USER: <ID>
WORDPRESS_DB_PASSWORD: <PW>
ports:
- "3306:3306"
실행은 다음과 같이 해당 파일이 있는 곳에서 하면 된다.
$> docker-compose up -d
# 삭제시 해당 인스턴스도 삭제 한다!! 조심할 것!
$> docker-compose down