이 포스팅은 아래의 강의를 참고한 개인 정리본이니 강의를 통해 공부하시는 것을 추천드립니다.
1. Node.js에서 MongoDB 연결
이번 시리즈에서는 npm의 mongodb가 아닌 mongoose API를 사용해서 연결할 것이다.
(편의 기능이 mongoose에 더 많다고 함)
1) mongoose 설치
npm i mongoose
2) connection 맺기
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const MONGO_URI = ;// MONGODB_URI 넣으면 됩니다.
const server = async() => {
let mongoCon = await mongoose.connect(MONGO_URI);
console.log({mongoCon});
...
}
server();
맺어지는 것을 확인했으니 mongoDB Connection 결과를 console.log에 찍는 건 지움
2.User 스키마에 들어갈 데이터의 정합성 검사하는 룰을 만들기
User.js
const mongoose = require('mongoose');
// schema 즉, 데이터의 정합성 체크 부분
const UserSchema = new mongoose.Schema({
username:{type: String, required: true},
name: {type: String, required: true},
age: String,
email: String,
nickname: String,
gender: String
}, {timestamps: true});
// timestamps : 데이터가 생성된 시각을 넣는 기능
const User = mongoose.model('user', UserSchema);
module.exports = {User};
위에서 User를 export 한 것을 가져와서 사용해주면 된다.
index.js
아래처럼 요청 하는 경우 필요한 데이터가 없다고 에러를 발생시킨다.
(User.js에 명시한 형식과 다름)
+) 정합성 검사에서 정합성 실패 시, 클라이언트에 오류 메시지 보내기
try / catch 문을 이용
3. 필수 데이터를 보내서 데이터가 생성되는 것을 확인
4. 생성된 데이터 조회
5. PK값처럼 중복되지 않는 필드 설정하기
2번의 schema 설정 부분에서 unique 값을 true로 설정해주면 된다.
unique 값을 true로 해주면, mongoose가 Index를 알아서 넣어준다.
(만약 설정 전에 해당 필드에 중복되는 값이 있었을 경우 중복 값을 제거해주고 다시 시도해보면 된다.)
6. 특정 데이터만 조회
url에 파라미터로 받고, findOne을 이용해서 하나의 특정 데이터만 조회할 수 있다.
7. 특정 데이터 삭제
아래의 소스에서는 findOneAndDelete를 이용해서 삭제된 데이터를 반환하도록 구현함
8. 특정 데이터 수정
삭제와 마찬가지로, updateOne과 findOneAndUpdate가 있다.
추가로 findOneAndUpdate 시, 옵션으로 new:true를 주면 수정 이후의 데이터가 반환되며 아닌경우 수정 이전의 데이터가 반환됨
- 수정 작업 호출
* 만약, 여러 필드를 수정하고 싶을 때 변수를 따로 만들어서 하면 된다.
하지만, 아래의 방법은 mongoose에서 기존에 설정해둔 schema 제약조건을 체크하지 못한다.
schema 제약 조건을 체크하는 시점 : User가 생성된 시점에 체크함.
그러므로 데이터를 수정할 때도 기존에 정의해둔 제약조건을 체크해야 한다면 findOneAndUpdate가 아닌,
findOne()을 이용해서 User객체를 찾은 다음, save()를 통해서 수정하면 된다.
(대신, DB를 2번 통신함)
9. Mongoose에서 호출하는 쿼리 보이기
아래 캡처의 소스처럼 debug를 true로 설정하면 mongoose에서 몽고DB로 호출하는 쿼리가 로그에 보인다.
참고1) Node.js에서 Router 이용하기
현재 User 관련 서비스를 생성하였으므로 userRouter를 만들어보자.
1) routes라는 폴더를 만들고 여기에 userRoute.js 파일을 생성 후 서버 메인 js에 있던 user 관련된 소스를 옮긴다.
(옮기면서 app부분을 userRouter로 변경하고 URL에서 user부분을 제거한다. )
2) 다 옮긴 후에 userRouter를 다른 js에서 사용할 수 있도록 export 해준다.
3) 서버 메인 js에서 userRouter를 불러오고 링크 설정을 해주면 끝.
'DB > MongoDB' 카테고리의 다른 글
[MongoDB 기초부터 실무까지] 7. 임시 데이터 생성 및 axios 사용해보기 (0) | 2022.08.13 |
---|---|
[MongoDB 기초부터 실무까지] 6. Board API 만들기 및 라우터 안에 라우터 파라미터 사용 방법 (0) | 2022.08.05 |
[MongoDB 기초부터 실무까지] 4. Node.js 동기 프로그래밍(Callback, Promise, Await) (0) | 2022.07.27 |
[MongoDB 기초부터 실무까지] 3. Node.js 환경 세팅 및 REST API 만들기 (0) | 2022.07.25 |
[MongoDB 기초부터 실무까지] 2. 데이터 간단하게 조작해보기 (0) | 2022.07.23 |