Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

schema-model

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

schema-model

Model backed by jsonschema validation

latest
Source
npmnpm
Version
1.1.0
Version published
Maintainers
1
Created
Source

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

Keywords

model

FAQs

Package last updated on 22 Dec 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts