Access current key as a parameter of the schema validator to generate dynamically styled labels
- Dominant language
- JavaScript
- Stars
- 21.2k
- Forks
- 1.5k
- Avg merge
- 4h 57m
- Merged PRs (30d)
- 14
Description
I'm trying to achieve the following...
```tsx
export const myValidationSchema = Joi.object({
myField: Joi.boolean().required().label('My field'),
myOtherField: Joi.boolean().required().label('My other field'),
}).unknown(false);
```
but without having having to specifically write the label by hand. Essentially the naming of our attributes is such that it'd be okay to pass a function accessing to `this` to the `.label` method so that we could just return the attribute name but in a human readable way.
I'm suggesting an implementation by giving an example but there must be a way to achieve this that I'm not aware of (maybe with all the `$_` properties).
```tsx
const toTitleCase = (label:string) => _.startCase(label);
export const myValidationSchema = Joi.object({
myField: Joi.boolean().required().label(toTitleCase),
myOtherField: Joi.boolean().required().label(toTitleCase),
}).unknown(false);
```
Which would make my validators spit an error like `"My field is required"`
Hope you understand what I'm trying to achieve.
Contributor guide
Assessment
This issue has not been assessed yet.