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
After attempting to use conditionals in Joi, I believe there is an issue with .conditional() when I am invoking it.
It appears as if when I attempt to invoke it per the docs .conditional(ref: string, options: WhenOptions[]) and what's defined on the interface, it attempts to invoke conditional(ref: Schema, options: WhenSchemaOptions)
I can confirm the issue, it looks like it was designed to be only working with is/then, I'm looking for ways to alter the codebase to deal with that, but my time may be limited, so feel free to make a PR if you find a clever way to do it.
By the way, I hope you're not using that exact construct to do a simple if/else, because it's obviously better written as is/then/otherwise in a single step.
@Marsup Sorry, been busy the last few weeks and didn't see your reply. I did end up going with the is/then/otherwise approach to work around the issue.
I was using is/not/then for a more complicated structure but gave the above example as I thought it was the most simplistic and highlighted the issue I was seeing the best.
Runtime
node.js
Runtime version
18, 20, 22
Module version
17.13.3
Last module version without issue
unknown
Used with
https://joi.dev/tester/
Any other relevant information
Hello,
After attempting to use conditionals in Joi, I believe there is an issue with
.conditional()
when I am invoking it.It appears as if when I attempt to invoke it per the docs
.conditional(ref: string, options: WhenOptions[])
and what's defined on the interface, it attempts to invokeconditional(ref: Schema, options: WhenSchemaOptions)
Example schema:
Example payload:
Expected behaviour:
Actual behaviour:
An error is encountered stating that the key of
not
is unknown.Possible cause of the error
The conditional method appears to be invoking the incorrect overloaded method at
joi/lib/index.d.ts
Line 1940 in ed25e95
joi/lib/index.d.ts
Line 1939 in ed25e95
What are you trying to achieve or the steps to reproduce?
I am trying to define a joi schema where there are alternatives using conditionals where the parameters are of the following corresponding types:
string
WhenOptions[]
What was the result you got?
I received an error:
What result did you expect?
I expected to be able to define conditional alternatives by referencing an object's attribute using a string instead of a
Reference
object.The text was updated successfully, but these errors were encountered: