ensures backend validation works recursively and formats pathnames according to nested fields

This commit is contained in:
James
2020-04-19 14:33:44 -04:00
parent 6e39f39c6f
commit a938671ef4
8 changed files with 27 additions and 18 deletions

View File

@@ -11,18 +11,25 @@ const iterateFields = async (fields, data, errors, path = '') => {
} else {
for (const field of fields) {
if (field.required) {
const validationResult = await field.validate(data[field.name], field);
if (data && data[field.name]) {
const validationResult = await field.validate(data[field.name], field);
if (validationResult !== true) {
if (validationResult !== true) {
errors.push({
field: `${path}${field.name}`,
message: validationResult,
});
}
} else {
errors.push({
field: field.name,
message: validationResult,
field: `${path}${field.name}`,
message: `${path}${field.name} is required.`,
});
}
}
if (field.fields) {
await iterateFields(field.fields, data[field.name], errors, `${path}${field.name}.`);
await iterateFields(field.fields, (data && data[field.name]), errors, `${path}${field.name}.`);
}
}
}