修改校验错误消息处理逻辑

This commit is contained in:
李运家 2024-06-13 15:51:33 +08:00
parent a04c65848a
commit 6572f48696

View File

@ -5,40 +5,43 @@ use validator::Validate;
use super::response::{ResData, ResErr, ResResult}; use super::response::{ResData, ResErr, ResResult};
pub fn validate_params(params: &impl Validate, _local: &str) -> ResResult<ResData<()>> { pub fn validate_params(params: &impl Validate, _local: &str) -> ResResult<ResData<()>> {
params.validate().map_err(|e| { let validate_err = params.validate();
let mut errors = vec![]; match validate_err {
for (_, err) in e.errors().iter() { Ok(_) => Result::Ok(ResData::none()),
match err { Err(err) => {
validator::ValidationErrorsKind::Struct(err) => { let mut errors = vec![];
err.field_errors().iter().for_each(|(_field, errs)| { for (_, err) in err.errors().iter() {
errs.iter().for_each(|e| { match err {
if let Some(Cow::Owned(msg)) = e.message.clone() { validator::ValidationErrorsKind::Struct(err) => {
errors.push(msg);
}
});
});
},
validator::ValidationErrorsKind::List(err) => {
for (_, err) in err.iter() {
err.field_errors().iter().for_each(|(_field, errs)| { err.field_errors().iter().for_each(|(_field, errs)| {
errs.iter().for_each(|e| { errs.iter().for_each(|e| {
if let Some(Cow::Owned(msg)) = e.message.clone() { let msg = e.message.clone().unwrap_or_default();
errors.push(msg); let msg_str = msg.to_string();
} errors.push(msg_str)
}); });
}); });
} },
}, validator::ValidationErrorsKind::List(err) => {
validator::ValidationErrorsKind::Field(err) => { for (_, err) in err.iter() {
err.iter().for_each(|e| { err.field_errors().iter().for_each(|(_field, errs)| {
if let Some(Cow::Owned(msg)) = e.message.clone() { errs.iter().for_each(|e| {
errors.push(msg); let msg = e.message.clone().unwrap_or_default();
let msg_str = msg.to_string();
errors.push(msg_str)
});
});
} }
}); },
}, validator::ValidationErrorsKind::Field(err) => {
}; err.iter().for_each(|e| {
} let msg = e.message.clone().unwrap_or_default();
ResErr::params(errors.join(";")) let msg_str = msg.to_string();
})?; errors.push(msg_str)
Result::Ok(ResData::none()) });
},
};
}
Err(ResErr::params(errors.join(";")))
},
}
} }