JavaScript object validator, using schemas
Vson is an object validator for nodejs. It uses a similar technique to Mongoose, which uses defined schemas for validation. However, there are no models here. The validation is being done by passing the schema and the object to validate.
$ npm install vson
Create a schema:
const { Schema } = require('vson');
const FooSchema = new Schema({
bar: Number
});
Validate an object:
var { Validator } = require('vson');
var FooValidator = new Validator(FooSchema, { allowNulls: true });
FooValidator.validate({ bar: 5 }, function(err) {
//=> error = null
});
A schema's child called a property
. A property value can be one of the following:
You can see all the appropriate definitions here. A definition is the property's settings. For example:
{
prop: { type: String, default: 'wat' } // This is called a definition
}
You can see all the types here. For example:
{
prop: Date
}
If the property value is only a type, it gains the default values for its definition. The default definition value:
{ type: String } // Could be any specified type
You could even allow multiple types, like so:
{ type: [String, Number] } // Could be string or a number
A virtual is just a child object. For example:
{
prop: { // This is a virtual
inside: String,
yay: { type: String, required: true }
}
}
An embedded schema is basically just an array of virtuals. For example:
{
prop: [{
prop: String,
wow: { type: Number }
}]
}
If there is a property called type
, the property value is considered
as a definition. If you need to include a type
property
inside a virtual, make the value of type
as a definition. In other words, if there
is a type
property inside, so the value considered as a definition.
{
wrong: {
type: Boolean // so sad.
},
right: {
type: { type: Boolean } // Works!
}
}
Creates a new vson schema instance.
Type: object
Validate a schema's structure.
Type: object
Default: this.schema
Creates a new vson validator instance.
Type: vson.Schema
Type: object
Default: {}
Type: boolean
Default: false
Type: boolean
Default: false
Type: boolean
Default: false
Validate an object accroding to a schema.
Type: object
Type: function
- ES2015ify it
- Finish the validator
- Promisify it
MIT © Yarden Sod-Moriah