駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

Mongooseのミドルウェア

ミドルウェア ・・・非同期関数の実行中に制御が渡される関数です。

特定のMongooseの処理が行われる前や後ろに自分の処理を差し込めることができま

す。

使われている例を挙げると、例えばSNSでユーザーが退会した際に、退会ボタンを押下

した後にコメントや写真などの関連データをすべて削除できるようになるみたいなもの

です。

2種類あり、「pre」と「post」です。

pre:設定したメソッドが実行される直前に呼ばれる処理

pos:設定したメソッドが実行された後に呼ばれる処理

 

早速簡単なサンプルを書いてみます。

一つドキュメント作成をします。この時点では名前は「Jiro Yamada」です。

const person2 = new Person({
name: { first: 'Jiro', last: 'Yamada' }
});
console.log(person2.fullName);
// Jiro Yamada
// 非同期処理になるので「async await」が必要です。今回は簡潔にしているので「async」のみにしています
personSchema.pre('save', async function () {
  this.first = 'ほげ';
this.last = 'もげ';
console.log('今から保存するよ');
})

personSchema.post('save', async function () {
console.log('保存完了');
})

「first」 と「last」に「ほげ」と「もげ」を設定し、実行します。

console.log(person2.fullName);
// ほげ もげ

名前が「ほげもげ」に変わります。

 

save以外にもメソッドは多いので使いこなせると便利になるかと思います。

mongoosejs.com