jjinny_0609
냐냥
jjinny_0609
전체 방문자
오늘
어제
  • 분류 전체보기 (249)
    • IT (18)
      • Eclipse (1)
      • 라즈베리파이 (8)
      • 정보처리기사 (2)
      • 팀 프로젝트 (5)
      • 자료구조 (1)
      • CS 지식 (0)
    • 프로그래밍 언어 (75)
      • Java (33)
      • 파이썬 (4)
      • Node.js (38)
    • 프론트엔드(Frontend) (83)
      • HTML (7)
      • CSS (8)
      • JavaScript (10)
      • jQuery (2)
      • React (50)
      • Vue.js (6)
    • 백엔드(Backend) (62)
      • 네트워크 (1)
      • 데이터베이스 (49)
      • Spring (6)
      • JSP (6)
    • 협업 도구 (6)
      • Git & GitHub (6)
    • 리뷰 (1)
      • 향수 (1)
    • Game Engine (2)
      • 언리얼 엔진5 (1)
      • Unity (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 블로그관리 홈
  • 글쓰기
  • 글관리

공지사항

인기 글

hELLO · Designed By 정상우.
jjinny_0609

냐냥

[MongoDB] Mongoose를 미들웨어로 정의하기
백엔드(Backend)/데이터베이스

[MongoDB] Mongoose를 미들웨어로 정의하기

2023. 12. 7. 16:38
728x90

Mongoose 미들웨어란?

Mongoose는 MongoDB를 사용하는 Node.js 앱을 위한 ODM(Object Data Modeling) 라이브러리로, 미들웨어를 활용해 데이터 작업 전후에 코드를 실행할 수 있습니다. Mongoose의 참고서를 통해 이 미들웨어에 대한 전체 가이드를 찾을 수 있습니다.

 

미들웨어 활용

Mongoose의 미들웨어를 통해 특정 작업 전후에 코드를 실행할 수 있습니다. 예를 들어, 사용자 삭제 시 관련된 데이터도 함께 삭제하고 싶은 경우, remove 메서드 호출 전후에 코드를 실행하여 관련 작업을 수행할 수 있습니다.

 

pre와 post hook

미들웨어는 pre와 post hook을 사용하여 특정 메서드 호출 전후에 실행됩니다. pre 미들웨어는 메서드 호출 전, post 미들웨어는 메서드 호출 후에 실행되며, save, remove 등 다양한 메서드에 적용할 수 있습니다.

 

미들웨어 구현

미들웨어를 구현하는 방법에는 콜백 함수에 next 매개변수를 사용하거나 Promise를 반환하는 두 가지 옵션이 있습니다. 이를 통해 코드의 중간에 실행되는지 확인하고 계속 실행 여부를 결정할 수 있습니다.

 

예시: save 메서드 전후 미들웨어

personSchema.pre('save', async function () {
  console.log("ABOUT TO SAVE!!!!");
});

personSchema.post('save', function () {
  console.log("JUST SAVED!!!!");
});

 

 

사용자 삭제 시 연관 데이터 처리 예시

personSchema.pre('remove', async function () {
  예: this.first = 'Yo';
  this.last = 'MAMA';
  // 사용자 삭제 전 작업 수행
  console.log("ABOUT TO SAVE!!!!");
});

personSchema.post('remove', function () {
  // 사용자 삭제 후 작업 수행
  console.log("JUST SAVED!!!!");
});

 

 

 

Mongoose의 미들웨어를 이용하면 데이터 작업 전후에 자유로운 코드 실행이 가능하며, 이는 복잡한 애플리케이션에서 유용합니다. 앞으로 더 다양한 모델과의 연동을 통해 미들웨어의 강력한 기능을 활용할 수 있을 것입니다. 이번 글에서는 Mongoose 미들웨어의 개념을 간략히 살펴보았습니다.

728x90

'백엔드(Backend) > 데이터베이스' 카테고리의 다른 글

[MongoDB] 모델 만들기  (0) 2023.12.10
[MongoDB] Express와 Mongoose 기본 설정(복습)  (0) 2023.12.09
[MongoDB] 가상 Mongoose  (0) 2023.12.05
[MongoDB] 정적 메서드 추가하기  (0) 2023.12.04
[MongoDB] Mongoose 인스턴스 메서드로 모델 확장하기  (0) 2023.12.03
    jjinny_0609
    jjinny_0609
    뉴비 개발자의 학습 내용을 정리한 블로그입니다.

    티스토리툴바