longshotlabs / simpl-schema

A JavaScript schema validation package that supports direct validation of MongoDB update modifier objects
https://www.npmjs.com/package/simpl-schema
MIT License
560 stars 115 forks source link

Question: How can I validate field for fixed value? #482

Closed klaucode closed 9 months ago

klaucode commented 1 year ago

Question 1: I would like to validate with SimpleSchema.oneOf([{if field "type" equals "apple", validate by this schema}, {if field "type" equals "banana", validate by next shema}]). Therefore, Is is somehow possible to set in SimpleSchema "type" equals to "value"?

Question 2: Is it possible to create a new custom field type "Html" and sanitize somehow, for example somewhere in clean() method html fields for allowed html tags with "sanitize-html" package?

Thanks a lot.

github-actions[bot] commented 1 year ago

Thank you for submitting an issue!

If this is a bug report, please be sure to include, at minimum, example code showing a small schema and any necessary calls with all their arguments, which will reproduce the issue. Even better, you can link to a saved online code editor example, where anyone can immediately run the code and see the issue.

If you are requesting a feature, include a code example of how you imagine it working if it were implemented.

If you need to edit your issue description, click the [...] and choose Edit.

Be patient. This is a free and freely licensed package that I maintain in my spare time. You may get a response in a day, but it could also take a month. If you benefit from this package and would like to see more of my time devoted to it, you can help by sponsoring.

aldeed commented 9 months ago

Question 1: This package doesn't have literal types, but to figure out the correct oneOf schema, it uses the first schema that is valid. Therefore, I think you can do what you want by having allowedValues: ["apple] on the first schema and allowedValues: ["banana] on the second schema

aldeed commented 9 months ago

Question 2: Not that I can think of. You would have to sanitize html into a string field before validating.

klaucode commented 9 months ago

Question 1: This package doesn't have literal types, but to figure out the correct oneOf schema, it uses the first schema that is valid. Therefore, I think you can do what you want by having allowedValues: ["apple] on the first schema and allowedValues: ["banana] on the second schema

Hi @aldeed, thanks for your answer. I was reported a long time before some "unexpected" behavior with "oneOf", I will try and an case of problem, I will let you know.