데이터에서의 미들웨어 사용은 사용자가 저장하기 전 어떠한 규칙이 적용되었는지 체크할 수 있고 암호 같은 경우 보안이 중요하기에 저장하기전 어떠한 함수를 부여한 후 POST 되게 할 수 있는 역할을 한다
미들웨어(Middleware,pre,post hook)는 비동기 함수를 실행하는 동안 제어가 전달되는 함수로 미들웨어는 스키마 수준에서 지정되며 플러그인 작성에 유용하다.
const mongoose = require("mongoose");
mongoose.set("strictQuery", true);
mongoose
.connect("mongodb://localhost:27017/shopApp")
.then(() => {
console.log("Connection Open!!!");
})
.catch((err) => {
console.log("ERROR!!!!!!!!!!!!!");
console.log(err);
});
const { Schema } = mongoose;
const personSchema = new Schema({ first: String, last: String });
personSchema.virtual("fullName").get(function () {
return `${this.first} ${this.last}`;
});
// Middleware function
personSchema.pre("save", async function () {
console.log("About To Save!!!");
});
personSchema.post("save", async function () {
console.log("Just Saved!!!!!!");
});
const Person = mongoose.model("Person", personSchema);
const zz = new Person({first:"za" last"zero"})
zz.save()
--> 결과
About To Save!!!
Just Saved!!!
personSchema.pre("save", async function () {
this.first = "YO";
this.last = "MAMA";
console.log("About To Save!!!");
});
const park = new Person({first:"zerozae", last:"PARK"})
park
{
first:"zerozae",
last:"PARK",
_id: new ObjectId~~~~
}
park.save().then(m => console.log(m))
--> 결과
About To Save!!!
Just Saved!!!!!
{
first:"YO",
last:"MAMA",
_id:new ObjectId~~~~
__v: 0
}