MERN - MongoDB 연결

bkboy·2022년 7월 21일
0

웹 개발

목록 보기
22/26
post-thumbnail

MongoDB

관계형 데이터베이스와 대비되는 NoSQL 데이터베이스로 json 형태로 db에 데이터를 저장한다. 데이터베이스에 관한 개념을 설명하는 글이 아니기에 관계형이니 비관계형이니 하는 자세한 설명은 생략한다.

MongoDB 연결하기 (Mongoose)

npm install mongoose --save

몽구스는 몽고디비를 더 쉽게 사용할 수 있는 도구이다. 몽구스를 설치하면 몽고디비도 설치된다.

몽고디비 사이트에 가입해서 프로젝트를 생성하고 데이터베이스를 만들 수 있다.

사진에 보이는 connect를 눌러 확인하면 연결에 사용하는 uri가 나오게된다.

// index.js
const mongoose = require('mongoose');

const uri ='mongodb+srv://아이디:비밀번호@shopping.5cw7f.mongodb.net/?retryWrites=true&w=majority';

mongoose.connect(uri, {
        // useNewUrlParser: true,
        // useUnifiedTopology: true,
        // useCreateIndex: true,
        // useFindAndModify: false,
    })
    .then(() => console.log('DB connection'))
    .catch((err) => console.error(err));

이 코드를 추가하고 서버를 실행 했을 때 DB connection 문구가 나오면 연결에 성공한 것이다.

코드를 간단히 해석하면 mogoose를 얻어온 뒤 connect 메서드를 이용해 연결을 하고 성공했을 시와 실패했을 시 결과를 출력하게 된다.

스키마와 모델

쉽게 설명해 스키마는 데이터의 구조이고, 모델은 스키마를 이용해 만들어낸 인스턴스(구현된 객체)이다.

models 폴더를 생성하고 user.js 파일을 만든다. user모델을 생성할 용도이다.

// user.js
const mongoose = require('mongoose');

const userSchema = mongoose.Schema({
    name: {
        type: String,
        maxlength: 50,
    },
    email: {
        type: String,
        trim: true,
        unique: 1,
    },
    password: {
        type: String,
        minlength: 5,
    },
    lastname: {
        type: String,
        maxlength: 50,
    },
    // 관리잦와 일번 유저를 구분하기 위해!
    role: {
        type: Number,
        default: 0,
    },
    image: String,
    token: {
        type: String,
    },
    // 토큰 유효기간
    tokenExp: {
        type: Number,
    },
});
const User = mongoose.model('User', userSchema);
module.exports = { User };

형태를 이해하도록 하자. 마찬가지로 mogoose를 불러오고 메서드를 사용해 스키마를 만들고 그 스키마를 이용해 모델을 만들었다. 그리고 export했다.

참고

profile
음악하는 개발자

0개의 댓글