экспресс-валидатор игнорирует недействительные поля
как я могу игнорировать недействительные поля?
я хочу просто получить все проверенные поля в req.body
пример:
ПОЧТА: http://127.0.0.1:3000/api/auth/signup
проверитьСхема:
проверка имени, электронной почты и пароля
checkSchema({
name: {
isAlpha: {
errorMessage: 'Your name must contain letters only',
},
isLength: {
errorMessage: 'First name must be between 3 and 10 chars',
options: {
min: 3,
max: 10,
},
},
},
email: {
isEmail: {
errorMessage: 'Email is not valid',
},
custom: {
options: async (value, { req }) => {
const user = await User.findOne({ where: { email: value } });
if (user) throw new Error('Email already used');
return true;
},
},
normalizeEmail: [],
},
password: {
notEmpty: {
errorMessage: 'Choose a password for your account',
},
isLength: {
errorMessage: 'Password must be between 6 and 30 chars',
options: {
min: 6,
max: 30,
},
},
custom: {
options: (value, { req }) => {
if (value !== req.body.confirm_password) throw new Error('Please confirm your password');
return true;
},
},
},
});
теперь в req.body я получаю все поля
{
"name" : "Johen",
"password" : "123456789",
"confirm_password" : "123456789",
"email" : "john@gmail.com",
"role" : "admin" <-- i don't want this
}
как я могу предотвратить это? я хочу, чтобы req.body содержал только те поля, которые я проверил, и игнорировал все остальные поля?
я знаю, что могу использовать деструктурирование для извлечения нужных мне полей
const {name,email,password} = req.body;
но я не хочу этого.
я хочу удалить поля, которых нет в checkSchema