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