Mongoose Schema.pre insertMany 미들웨어
Sep 23 2020
nodeJs와 함께 mongoose를 사용하고 있으며 insertMany 사용할 때 호출되는 미들웨어를 구현하려고합니다. 몽구스 문서에는 예제가 전혀 없지만 insertMany 모델 함수가 다음 미들웨어를 트리거 함을 확인합니다 : insertMany ().
기본 사용자 스키마가 있고 bcrypt로 암호를 해시하려면 insertMany 후크가 필요합니다.
UserSchema.pre('insertMany', async function (err, docs, next) {
try{
docs.map(async function (doc, index) {
// async hash password
doc.password = await User.hashPassword(doc.password);
});
} catch (error) {
console.log(error);
}
next();
});
암호 해싱 및 '저장'후크를 포함하여 나머지 모든 것이 작동하기 때문에 모든 스키마를 게시하지는 않습니다. 많은 사용자를 삽입하려고 할 때이 오류가 발생하는 이유를 이해할 수 없습니다.
다음은 함수가 아닙니다
일반적으로 다음 미들웨어로 진행하기 위해 next ()를 호출하지만이 경우에는 작동하지 않습니다. next ()를 제거하면 코드가 다음 미들웨어로 이동하지 않고 두 경우 모두 사용자가 삽입되지 않습니다.
누군가 나를 도울 수 있습니까?
답변
1 PavloKostohrys Sep 23 2020 at 21:14
콜백에서 잘못된 인수를 제공했기 때문입니다. 후크는 '다음'인수 만 적용합니다. 콜백 함수 인수를 (err, docs, next)에서 (next, docs)로 변경해야하며 작동합니다.
여기에서 볼 수있는 세부 정보 https://mongoosejs.com/docs/middleware.html#pre
https://mongoosejs.com/docs/middleware.html#types-of-middleware