백엔드(Backend)/데이터베이스

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

jjinny_0609 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