Skip to content
A data modeling language (for node and the browser)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
test
.gitignore
.travis.yml
LICENSE
README.md
compiler.js
error.js
index.js
package.json
parser.js
type.js
validator.js

README.md

SYNOPSIS

A data modeling language reference implementation. See dml.sh

BUILD

Build Status

USAGE

sample.model

Define a model using the data modeling language syntax

// An example data model

Date created
Number id

String name
  require // this is a comment
  gt 2 "Must be greater than 2 characters"
  lte 256 "Must be less than or equal to 256 characters"

String bio "A bio must be a string"
  lte 140 "A bio must fit into a tweet"

Boolean accountType

index.js

Compiling a model returns a function that will validate data.

const Models = require('node-dml')

let model = Models.compile(fs.readFileSync('sample.model', 'utf8'))

let result = model({
  id: 1337,
  created: new Date(),
  name: 'Glen Danzig',
  accountType: 'awesome'
})

output

The result will be an object that contains the final data, as well as a length property which indicates how many rules were violated, and a rules property containing information about the rules that were violated.

{
  data: {
    id: 1337,
    created: '2016-10-02T13:56:44.931Z',
    name: 'Glen Danzig',
    accountType: 'awesome'
  },
  length: 1,
  rules: {
    accountType: [{
      validator: 'type',
      message: 'Expected type [Boolean] but got type [String]'
    }]
  }
}
You can’t perform that action at this time.