You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, struggling to figure out how I can apply a then clause based on whether one key has a certain value or another key has a different value, hoping somebody could help...
And I'd like to extend it so that if either foo="bar" OR baz="qux" will both apply the then. I know I could† add another .when and move my then stuff into a var, or duplicate it (actual code has a lot of conditions though so want to avoid any duplication) like this:
There's nothing wrong in composing schemas through variables. You can also use shared schemas. I'd need a more complete example to provide relevant advice, but if your condition is to be applied in many places, you can take it up a level if that helps, like this:
Joi.object({foo: Joi.string(),baz: Joi.string(),quux: Joi.boolean().required(),}).when(Joi.alternatives([// Partial checks of the inner objectJoi.object({foo: Joi.valid("bar").required()}).unknown(),Joi.object({baz: Joi.valid("qux").required()}).unknown(),]),{// This will be merged with the base objectthen: Joi.object({somethingElse: Joi.string(),anotherThing: Joi.boolean(),}),})
Runtime
Node.js
Runtime version
v20.4
Module version
17
Used with
standalone
Any other relevant information
No response
How can we help?
Hi, struggling to figure out how I can apply a
then
clause based on whether one key has a certain value or another key has a different value, hoping somebody could help...I currently have something like this:
And I'd like to extend it so that if either
foo="bar"
ORbaz="qux"
will both apply thethen
. I know I could† add another.when
and move mythen
stuff into a var, or duplicate it (actual code has a lot of conditions though so want to avoid any duplication) like this:but it feels like there must be a cleaner way to do it? Maybe with
alternatives
or something?Thank you 🙏
† I'm assuming this would work anyway, haven't actually tried it
The text was updated successfully, but these errors were encountered: