Connnecting to Mongo

0_CyberLover_0·2022년 4월 3일
0

Node.JS # 03

목록 보기
2/19

Mongoose에 대해 알아 보자

mongoosenode.jsmongoDB를 이어주는 다리이다. 많은 사람, 많은 기업에서 mongoose를 사용한다.

mongoDB를 사용하고 그 작업을 javaScript를 쓴다면 mongoose는 필수 사항이다.

javaScript로 작성을 하면 mongoosemongoDB에게 전해 준다.

validation 할수 있고, query building도 할 수 있고,hook도 있고, mongoose

아주 많은 것을 할 수 있다.

node.js에서 mongoDB와 상호작용하기 위해서 mongoose를 사용하는거다.

mongoose를 설치하기전에 mongoDB가 설치가 잘 되었는지 확인해야 한다.

terminal을 열어서 mongod 라고 치면 된다. 에러가 아닌 어떠한 메세지가 뜬다면 잘 되고 있다는 거라고 생각하자.

만약 'mongod command not found'라든지 'mongod is not a command' 같은 메세지가 뜨다면 제대로 설치가 안된거다.

설치가 된걸 확인 했다면 이제 터미널에 'mongo'라고 쳐보자.

그러면 'mongoDB shell'이랑 연결을 해준다. mongoDB 와 대화 할수 있다는 뜻이다.

그럼 이제 mongoDB 안에 명령어를 쓰는게 가능해진다.

'help'라고 쳐보자. 그러면 mongoDB가 가지고 있는 명령어들을 볼 수 있다.

showdbs 라는 명령어를 쳐보자. 데이터를 받고 있는걸 보여준다.

기본적인 것들은 추후에 알면 되고 일단 exit를 쳐서 나간다.

이제 mongoose를 설치해 보자.

https://www.npmjs.com/package/mongoose 사이트로 가서 확인해보고

vsc에 터미널에서 npm i mongoose 입력해 주면 설치가 된다.

src폴더 안에 database라는 파일을 새로 만들어 준다.

db.js 파일명으로 생성해 주었다. 이제 컴퓨터에 실행되고 있는 monfo database에 연결해 준다.

터미널에서 'mongo' 명령어를 실행해서 database가 실행되고 있는 url을 복사해서 넣어 준다.

mongo 명령어를 console에서 실행 시켜서 url을 받아야한다.

그 다음 mongoose를 import하고 mongoose.connect()를 작성해준다.

그리고 해당 url을 넣어 준다.

import mongoose from "mongoose";

mongoose.connect("mongodb://127.0.0.1:27017/");

mongodb에 새로운 database를 만드는건 아주 간단하다.

url에 연결한뒤 '/'뒤에 database 이름을 적어주면 된다.

mongoose.connect("mongodb://127.0.0.1:27017/wetube");

이런 식으로 추가해 주면 된다. mongoosewetube라는 mongodb database로 연결해 준다.

지금은 존재하지 않지만 나중에 존재하게 될거다. 이름만 꼭 명시해 주도록 한다.

현재 서버를 보면 파일을 전혀 부르고 있지 않는다.

그래서 파일을 import 해주도록 하자. 파일의 어느 한 function도 아니고, export default

export non-default도 아니고, 파일 자체를 import할거다.

server.js에서

import "./db";

맨 윗줄에 추가해 주었다. 현재 functionimport하는게 아니다.

constantimport하는 것도 아니고, 파일 그자체를 import하는 거다.

서버는 이 라인을 보는 순간 이 파일을 import해줌으로써, 서버가 mongo에 연결되는거다.

(강의 내에서는 경고문이 console.log에 떴는데 현재는 뜨지 않는다.

그래도 혹시 모르니 경고문에 대해 했던 방식 그대로 해보도록 한다.)

server.js에서

import mongoose from "mongoose";

mongoose.connect("mongodb://127.0.0.1:27017/wetube", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const db = mongoose.connection;

const handleOpen = () => console.log("✅Connected to DB");

db.on("error", (error) => console.log("DB Error", error));
db.once("open", handleOpen);

연결의 성공 여부나 에러를 console.log로 출력하게 한다면 더 좋을것 같다.

connectionevent를 붙여주고, db.on 적어주고, error라는 event를 적어 준다.

만약 error가 뜬다면 그럼 그 에러를 console.log 해준다.

즉 여기서 error를 받아서 그리고 console.log 만약 database에 에러나가 나면,

event가 발생한다.

그리고 또 database에 발생 할수 있는 다른 이벤트는 database로의 connection을 여는 때도 있다.

connection이 열린다는 말은 database에 연결된다는 뜻이다.

console.logdatabase에 연결이 됐다고 출력하게 한다.

eventonce를 사용할거다. 여기서 ononce의 차이점은

on은 여러번 계속 발생시킬수 있다. 클릭 같은 이벤트 이다.

once는 오로지 한번만 발생 한다는 뜻이다.

connection이 열리게 되면 'connected to DB'라는 문구로 확인 할수 있게 해주는 거다.

다시 한번 말하면 open은 오로지 한번만 일어나는 거고, error는 여러번 일어날 수있다.


const db = mongoose.connection;

const handleOpen = () => console.log("✅Connected to DB");
const handleError = (error) => console.log("DB Error", error);

db.on("error", handleError);
db.once("open", handleOpen);

그리고 원한다면 이렇게 바꿔 줄수도 있다. 더 보기 좋게 error function을 만들어 줄수 있다.

errormongoose에게서 받을거다. 그리고 handleError라고 적어준다.

아주 작은 파일이지만 동시에 아주 중요한 파일이다.

다시 한번 확인해 보면 database에 연결이 됐고, mongooseconnection에 대한 엑세스를 줬다.

그래서 서버와 database 서버의 사이의 현재 connection에 엑세스 할수 있다.

그리고 몇가지 event를 듣고 있다.

하나는 error이다 error가 뜰 때마다 "DB Error"라고 출력 될것이다.

그리고 connection이 열릴 때 event가 한번 발생 할 거다.

profile
꿈꾸는 개발자

0개의 댓글