Connnecting to Mongo
Mongoose에 대해 알아 보자
mongoose는 node.js와 mongoDB를 이어주는 다리이다. 많은 사람, 많은 기업에서 mongoose를 사용한다.
mongoDB를 사용하고 그 작업을 javaScript를 쓴다면 mongoose는 필수 사항이다.
javaScript로 작성을 하면 mongoose가 mongoDB에게 전해 준다.
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");
이런 식으로 추가해 주면 된다. mongoose는 wetube라는 mongodb database로 연결해 준다.
지금은 존재하지 않지만 나중에 존재하게 될거다. 이름만 꼭 명시해 주도록 한다.
현재 서버를 보면 파일을 전혀 부르고 있지 않는다.
그래서 파일을 import 해주도록 하자. 파일의 어느 한 function도 아니고, export default나
export non-default도 아니고, 파일 자체를 import할거다.
server.js에서
import "./db";
맨 윗줄에 추가해 주었다. 현재 function을 import하는게 아니다.
constant를 import하는 것도 아니고, 파일 그자체를 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로 출력하게 한다면 더 좋을것 같다.
connection에 event를 붙여주고, db.on 적어주고, error라는 event를 적어 준다.
만약 error가 뜬다면 그럼 그 에러를 console.log 해준다.
즉 여기서 error를 받아서 그리고 console.log 만약 database에 에러나가 나면,
event가 발생한다.
그리고 또 database에 발생 할수 있는 다른 이벤트는 database로의 connection을 여는 때도 있다.
connection이 열린다는 말은 database에 연결된다는 뜻이다.
console.log로 database에 연결이 됐다고 출력하게 한다.
이 event는 once를 사용할거다. 여기서 on과 once의 차이점은
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을 만들어 줄수 있다.
error는 mongoose에게서 받을거다. 그리고 handleError라고 적어준다.
아주 작은 파일이지만 동시에 아주 중요한 파일이다.
다시 한번 확인해 보면 database에 연결이 됐고, mongoose가 connection에 대한 엑세스를 줬다.
그래서 서버와 database 서버의 사이의 현재 connection에 엑세스 할수 있다.
그리고 몇가지 event를 듣고 있다.
하나는 error이다 error가 뜰 때마다 "DB Error"라고 출력 될것이다.
그리고 connection이 열릴 때 event가 한번 발생 할 거다.
Author And Source
이 문제에 관하여(Connnecting to Mongo), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@0_cyberlover_0/Connnecting-to-Mongo저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)