hapijs / hapijs/joi

Access current key as a parameter of the schema validator to generate dynamically styled labels

Open
#2,947 0 comments 0 reactions 0 assignees View on GitHub
support
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.