Comments (10)
Yes, this is intended. It works much like an interface would validate a class if you will. Imagine simple interface.
interface Animal {
name: string;
}
class Dog implements Animal {
name: string;
race: string;
}
A lot of classes could be made from this, they only need to implement what is there. That's how interfaces usually work and that is how schema
works.
I guess an exact schema validation may be an interesting thing. Gotta ask @imbrn what he thinks.
from v8n.
Hey guys, how's it going?
So @dbismut, as @brfrth explained, the schema acts most like an interface, so the intention is indeed to validate extended objects. But I liked the idea of having a strict mode for that. If you guys agree, I think we should go with the modifier based version.
from v8n.
Ok! Just to explain my usecase, I'm in a situation where I want to detect the schema of an object. To do so I'm testing the object against a list of schemas. First schema from the list that matches the object is the one.
My problem comes as one schema is Point2d {x,y} and another is Point3d {x,y,z}. You see me coming but if Point2d is tested before Point3d, all {x,y,z} objects will be marked as Point2d.
It's no big deal as in my case I just need to test Point3d before Point2d but I was curious to know if I was missing something.
from v8n.
I get the idea of an exact schema validation for multiple use cases. Worth discussing.
from v8n.
I guess checking if the number of keys are equal would suffice?
from v8n.
I guess so. You can add it if you want and pull request.
from v8n.
I'm just not sure about the api though? schema().strict()?
from v8n.
Why not add an optional argument to schema?
function schema(schema, strict = false) {
// ...
}
Strict would be a modifier if anything, meaning it would be chained the other way.
v8n()
.strict.schema({})
.test({});
I honestly like both. The modifier is harder to implement though a tad more elegant.
from v8n.
Oh I agree.
Plus if strict is set, we should first check if the number of keys are equal and skip further validation if not. That's probably faster to check negatives than with chaining strict.
from v8n.
Closing this in favor of #191, thanks for your idea and input.
from v8n.
Related Issues (20)
- min() and max() rules in guide HOT 1
- JSON Schema HOT 2
- Version 1.3.0 - v8n().optional() and v8n().string() bug HOT 2
- Bug: nested async rules HOT 1
- Possibility to validate in relation to other rules HOT 4
- Optimise builds depending on consumer capability HOT 5
- Alternating true/false validation on a value HOT 2
- All causes = null when validating v8n().schema using testAll HOT 5
- Publish dist folder to git HOT 2
- Can we have a full example for async rules? HOT 2
- Improve support for CI/CD HOT 2
- Improve schema rule with dependent validations and strict mode
- Using optionality and asynchronous rules in the same chain HOT 6
- Logo has bad contrast on GitHub in dark mode HOT 6
- Doumentation does not deploy with GitHub actions
- Security concern HOT 2
- How to properly extend with typescript? HOT 2
- [Question] How to validate value of property against another property? HOT 4
- v8n import typescript - has no call signatures HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from v8n.