schema-model
v1.1.0
Published
Model backed by jsonschema validation
Downloads
4
Maintainers
Readme
schema-model
Javascript model backed by jsonschema validation
Usage
Example
var Model = require('schema-model');
var MyModel = Model.define({
schema: {
type: 'object',
properties: {
a: { type: 'string', required: true },
b: { type: 'number' }
}
}
});
var model = new MyModel();
model
.set('a', 'a')
.set('c.d', 1)
.setMany({ a: 'b', b: 'a' });
// check if model is valid
if (model.valid()) {
// do stuff
}
// re-constructing a model
var existing = new MyModel({ a: 'a', b: 'b' });
Model Definition
Returns a model class for creating model instances and validating them
Options
schema
: JSON Schema used for validating the model. Schema has been enriched withjsonschema-extra
(https://www.npmjs.com/package/jsonschema-extra) to support additional types and attributesdefault
: Function to generate the default model, defaults tofunction() { return {}; }
Instance Methods
.get([property])
Return the entire model or a single property
// root property
model.get('a');
// nested property
model.get('a.a');
// entire model
model.get();
.set(property, [value])
Set a single or multiple properties. Can chain multiple set
commands
model
.set('a', 1)
.set('a.a', 'a')
.set({ b: 2, 'c.d.e': [] });
.valid()
Returns a boolean to indicate if a model passes the schema
var MyModel = Model.define({
schema: {
type: 'object',
properties: {
a: { type: 'string', required: true },
b: { type: 'number' }
}
}
});
var model = new MyModel();
model
.set('a', 'a')
.set('c.d', 1)
.setMany({ a: 'b', b: 'a' });
// check if model is valid
if (model.valid()) {
// do stuff
} else {
// stores the current state of the model including its validation result
console.error(this.state);
}
.toJSON()
When the model instance is JSON.stringified
, it returns the raw model. Can also be used as an alternative to .get()
to retrieve the entire model as JSON.
var assert = require('assert');
var MyModel = Model.define();
var model = new MyModel({ a: 1, b: { a: 2 } });
assert.deepEqual(
JSON.parse(JSON.stringify(model)),
{ a: 1, b: { a: 2 } }
);
Changelog
v1.1.0 (22 Dec 2014)
- Bumped dependency versions
v1.0.2 (19 Dec 2014)
- Updated project git url
v1.0.1 (18 Dec 2014)
- Minor documentation changes
v1.0.0 (18 Dec 2014)
- Initial commit