혹시 설치방법을 모르신다면 설치법에 대한 게시물이 있으니 보고 오시면 편합니다! 이 게시물은 node에 대한 기본 세팅이 다 끝났다는 가정하에 DB를 연결해 보는 글이니 참고 바랍니다.
먼저 database 메뉴에서 Connect 버튼을 클릭합니다.
그러면 아래와 같은 창이 뜨는데 여기서 노드 버전을 설정하고 터미널에
npm install mongodb@<버전>을 복사해서 설치합니다.
터미널에서 Mongoose를 설치해줍니다.
여기서!!! Mongoose는 Node.js와 MongoDB를 연결해 주는 ODM입니다.
(ODM(Object Document Mapping) : 객체와 문서를 1대 1로 매칭하는 역할)
MongoDB의 ODM은 다양하지만 Mongoose가 가장 유명합니다.
설치
npm install mongoose --save
설치가 완료되면 package.json을 확인 합니다. 아래와 같다면 잘 설치된 것입니다.
"dependencies":{
"mongodb":"4.1",
"mongoose":"^7.4.0",
},
그다음 에디터로 가서 초기 세팅을 해줍니다.connect 메서드를 이용해 mongoDB와 연결시킬 겁니다. 위 사진에 3번 항목에 있던 링크를 가져와서 변수에 할당 후 connect의 첫 번째 인자에 넣어줍니다. 그리고 객체가 보이실 텐데요! 왜 객체 안에 코드들이 주석처리가 되었냐면 낮은 버전에서는 저렇게 문구들을 넣어주는 게 맞지만 찾아보니 버전 6 이상부터는 저것들을 자동으로 인지하고 있어서 따로 써줄 필요가 없답니다. 만약 저 값들을 넣는 다면?
mongoparseerror: options newurparse, usefindandmodify are not supported
파일을 구분하기 위해 models 폴더를 생성하고 User.js 파일을 생성합니다. 그 후 아래와 같은 코드를 작성해 줄게요.
여기서! Mongoose는Schema라는 개념이 존재합니다. Mongoose는 'table'이라는 개념이 없기 때문입니다. MongoDB의 경우 데이터를 아무 형태의 값으로 넣을 수 있기 때문에 편리하면서도 어떤 경우엔 원하는 자료형과 맞지 않는 데이터가 들어갈 수도 있는 문제가 있습니다. 그 문제를 해결하기 위해! Mongoose는 Schema를 도입한 것입니다. Schema는 SQL의 table과 비슷한 개념, 또는? 'typescript처럼 타입을 미리 지정해 놓는다'라고 생각하고 사용하시면 될 것 같습니다.
그래서! 아래와 같이 어떤 형식으로 데이터를 받을지 미리 schema를 만들어 놓습니다.
//mongoose를 불러옵니다
constmongoose=require("mongoose");
//user 정보 설정하기
constuserSchma= mongoose.Schema({
//사용자 이름
name:{
type: String,
maxlength:50,//최대 글자수
minlength:5 //최소 글자수
},
//이메일
email:{
type: String,
trim:true,//이메일을 입력할 때 띄어쓰기가 있으면 띄어쓴 부분 없애줌
unique:1//이메일 중복 안되게 설정
},
//비번
password:{
type: String,
maxlength:15,
minlength:8
}
});
//스키마 작성 끝나면 모델안에 스키마 넣어주기(모델은 스키마를 감싸주는 역할 입니다)
constUser= mongoose.model("User",userSchma);
//다른 곳에서도 쓸 수 있게 모듈화 해줌
module.exports={ User };
모델을 가져오고 register 경로로 post 요청을 보내면 응답해 주는 코드를 작성합니다
//모델을 가져옴
const{User}=require("../models/User.js");
app.post("/register",(req,res)=>{
//인스턴스 객체 생성 후 클라이언트 요청을 담습니다.
constuser=newUser(req.body);
//정보를 db에 보내준다. 이때 , 성공하거나 에러가 나면 메세지를 json 형식으로 보내줍니다.
//mongoDB 메서드, user모델에 저장 합니다.
//mongoose 6버전 부터는 save 에 콜백함수를 지원하지 않아 아래와 같이 코드 작성합니다.