1. MongoDB 설치하기
https://mongodb.com/try/download/community
위 링크에서 다운로드 가능하다.

설치 중 다음과 같은 화면에서 해당 박스에 체크를 하지 않고 Next를 누른다.
설치 이후 중요한 단계를 거쳐야 한다.
바로 서버를 실행하기 전에 데이터가 저장될 폴더(C:\data\db)를 먼저 만들어야 한다.
터미널에서 몽고디비를 실행할 수 있는 MongoSh(몽고쉘)을 설치해야 한다.
https://mongodb.com/try/download/shell
2. MongoDB 연결하기
몽고쉘을 설치한 이후 터미널에서 $ mongosh 을 입력하면 몽고디비에 접속할 수 있게 된다.
그럼 프롬프트에서 test> 로 바뀌게 되는데, 맨 처음 누구나 몽고디비에 접속할 수 있으므로 관리자 계정을 추가해주는 것이 좋다.
test> use admin
switched to db admin
admin> db.createUser({ user: '이름', pwd: '비밀번호', roles: ['root'] })
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
db.createUser 메서드로 계정을 생성할 수 있다.
이후 로그인을 통해 몽고디비를 접속하려면 다음과 같이 터미널에 입력하면 된다.
mongod --ipv6 --auth
프로젝트에서 사용 시 .env 코드에 해당 mongodb 아이디와 패스워드를 등록하고 사용해야 한다.
3. express.js에서 사용하기
1. 터미널에서 npm install mongoose 실행
npm i mongoose
2. mongoose configuration 코드 생성
``` model/index.js ```
const mongoose = require('mongoose');
const connect = () => {
// 1. 개발 환경일 떄만 콘솔을 통해 몽구스가 생성하는 쿼리 내용을 확인할 수 있게 하는 부분
if (process.env.NODE_ENV !== 'production') {
mongoose.set('debug', true);
}
// 2. 몽구스와 몽고디비 연결
mongoose.connect(process.env.MONGO_URI, {
dbName: process.env.DB_NAME,
});
};
// 3. 몽구스 커넥션의 이벤트 리스너
mongoose.connection.on('error', (error) => {
console.error('몽고디비 연결 에러', error);
});
module.exports = connect;
``` app.js ```
connect(); // mongoose 접속
위 코드 작성 시 .env 파일에 mongodb 서버 url을 담아두는 것이 보안상 적합하다!
4. model 생성하기
const mongoose = require('mongoose');
const { Schema } = mongoose;
const member = new Schema({
name: {
type: String,
default: null
},
studentId: {
type: String,
default: null,
},
club: {
type: String,
default: null,
enum: ['wink', 'foscar']
},
profile: { // 사진 링크로 받기
type: String,
default: null,
},
kakaoId: { // 로그인 시 회원 조회 기준 key
type: String,
},
isAdmin: { // 관리자 분류 key
type: Boolean,
default: false
}
});
member.index({ studentId: 1 }); // 학번 오름차순(1) ,내림차순은 -1로 설정.
module.exports = mongoose.model('Member', member);
중요한 것은 다음이다.
간략한 설명들은 주석으로 대체하겠다.
1. mongoose 모듈을 import 하여 Schema 클래스를 사용하여 모델 객체 생성.
mongodb에 들어갈 데이터 모델을 직접 생성하는 과정이다.
안에 들어갈 속성 이름과 해당 속성의 type은 필수적으로 지정해주어야 한다.
2. module.exports = mongoose.model('생성할 model 이름', Schema 객체)
몽구스 모델을 외부 컨트롤러나 비즈니스 로직에서 사용가능하게 하는 작업이다.
다음은 외부 파일에서 해당 Member 모델을 생성하는 예제이다
const Member = require('../models/member')
const newUser = await Member.create({
kakaoId: profile.id
});
Member.create를 통해 document를 생성할 수 있으며 지정해준 속성값 (예제에서는 kakaoId) 외의 다른 속성들은 전부 null 처리가 된다!
'Back-end > Node.js' 카테고리의 다른 글
[Express.js] Passport 모듈을 활용한 카카오 소셜 로그인 구현 (0) | 2024.06.27 |
---|---|
[2023-2 WINK Project] 1. Express 시작하기 (2) | 2024.04.20 |