修改校验错误消息处理逻辑
This commit is contained in:
parent
a04c65848a
commit
6572f48696
@ -5,40 +5,43 @@ use validator::Validate;
|
||||
use super::response::{ResData, ResErr, ResResult};
|
||||
|
||||
pub fn validate_params(params: &impl Validate, _local: &str) -> ResResult<ResData<()>> {
|
||||
params.validate().map_err(|e| {
|
||||
let mut errors = vec![];
|
||||
for (_, err) in e.errors().iter() {
|
||||
match err {
|
||||
validator::ValidationErrorsKind::Struct(err) => {
|
||||
err.field_errors().iter().for_each(|(_field, errs)| {
|
||||
errs.iter().for_each(|e| {
|
||||
if let Some(Cow::Owned(msg)) = e.message.clone() {
|
||||
errors.push(msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
validator::ValidationErrorsKind::List(err) => {
|
||||
for (_, err) in err.iter() {
|
||||
let validate_err = params.validate();
|
||||
match validate_err {
|
||||
Ok(_) => Result::Ok(ResData::none()),
|
||||
Err(err) => {
|
||||
let mut errors = vec![];
|
||||
for (_, err) in err.errors().iter() {
|
||||
match err {
|
||||
validator::ValidationErrorsKind::Struct(err) => {
|
||||
err.field_errors().iter().for_each(|(_field, errs)| {
|
||||
errs.iter().for_each(|e| {
|
||||
if let Some(Cow::Owned(msg)) = e.message.clone() {
|
||||
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| {
|
||||
if let Some(Cow::Owned(msg)) = e.message.clone() {
|
||||
errors.push(msg);
|
||||
},
|
||||
validator::ValidationErrorsKind::List(err) => {
|
||||
for (_, err) in err.iter() {
|
||||
err.field_errors().iter().for_each(|(_field, errs)| {
|
||||
errs.iter().for_each(|e| {
|
||||
let msg = e.message.clone().unwrap_or_default();
|
||||
let msg_str = msg.to_string();
|
||||
errors.push(msg_str)
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
ResErr::params(errors.join(";"))
|
||||
})?;
|
||||
Result::Ok(ResData::none())
|
||||
},
|
||||
validator::ValidationErrorsKind::Field(err) => {
|
||||
err.iter().for_each(|e| {
|
||||
let msg = e.message.clone().unwrap_or_default();
|
||||
let msg_str = msg.to_string();
|
||||
errors.push(msg_str)
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
Err(ResErr::params(errors.join(";")))
|
||||
},
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user