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
We use coerceTypes: true in AJV, this will convert values to the "correct" type before validating. This can be useful if e.g. a number is stored as a string, so that "12" will be treated as 12 and will not fail the type: number validation. A less fortunate side-effect of this is that it will also coerce null to something that is valid for each type. For numbers, null -> 0, which can cause validations to appear when they should not. We use null to say that a value is missing, and this should not give an error unless it is required.
coerceTypes: true was probably necessary previously when we stored all of the form data as strings. This is no longer the case, so we may be able to get rid of this option now. It could easily break things however, so we cannot just remove this without testing extensively in existing apps.
One possible solution is removing null values from the datamodel before running the schema validation. It does not seem like we can fix this by messing with other AJV options (useDefaults: 'empty' did not change things)
Steps To Reproduce
.
Additional Information
No response
The text was updated successfully, but these errors were encountered:
Description of the bug
Slack: https://altinn.slack.com/archives/C02EJ9HKQA3/p1730302631757679
We use
coerceTypes: true
in AJV, this will convert values to the "correct" type before validating. This can be useful if e.g. a number is stored as a string, so that"12"
will be treated as12
and will not fail thetype: number
validation. A less fortunate side-effect of this is that it will also coercenull
to something that is valid for each type. For numbers,null
->0
, which can cause validations to appear when they should not. We usenull
to say that a value is missing, and this should not give an error unless it isrequired
.coerceTypes: true
was probably necessary previously when we stored all of the form data as strings. This is no longer the case, so we may be able to get rid of this option now. It could easily break things however, so we cannot just remove this without testing extensively in existing apps.One possible solution is removing
null
values from the datamodel before running the schema validation. It does not seem like we can fix this by messing with other AJV options (useDefaults: 'empty'
did not change things)Steps To Reproduce
.
Additional Information
No response
The text was updated successfully, but these errors were encountered: