schema-model

1.1.0 • Public • Published

schema-model

NPM version David deps node version npm download

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 with jsonschema-extra (https://www.npmjs.com/package/jsonschema-extra) to support additional types and attributes
  • default: Function to generate the default model, defaults to function() { 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

Package Sidebar

Install

npm i schema-model

Weekly Downloads

0

Version

1.1.0

License

ISC

Last publish

Collaborators

  • jksdua