Skip to content

imrefazekas/mongoose-schemagen

Repository files navigation

NPM

js-standard-style

mongoose-schemagen is a very small utility library allowing to generate validable mongoose schemas from pure JS objects.

Features:

  • generates mongoose schema by a JS object
  • generates model
  • extends model's save function with validation
  • support indexing, unique constraint and value encryption
  • instance and static Model functions

By using this library, you will be free from the load of schema and model creation and every record you might want to create and store will be validated against the rules passed by. Use it well! :)

In the example, the rules follow the syntax of Vindication.js which is a great library to be used on both client and server side for validation.

This project is designed to support complex business models shared between client and server-side opening the code for the sharing of model, validation and computation functions.

License: MIT

##Usage

// require the lib
let schemagen = require('mongoose-schemagen')
// require the lib which can iterpret the validation rules. vindication.js is used in this example.
let vindication = require('vindication.js')

// have a prototype model. The business logic object will look like this.
let prototype = {
	password: {
		_type: String,
		_encrypted: true
	},
	uid: { _type: String, _unique: true },
	firstName: 'Planet',
	lastName: 'Earth',
	fullName: function() {
		return this.firstName() + ' ' + this.lastName()
	}
}


// define some rules as validation constraints
let rules = {
	firstName: { required: true, type: 'number' },
	lastName: { minlength: '1', type: 'alphanum' }
}

// create schema and model. The returning object possesses the mongoose model and the schema as well.
let gen = schemagen.generate(
	prototype,
	{
		firstName: { required: true, type: 'number' },
		lastName: { minlength: '1', type: 'alphanum' }
	},
	{ collection: 'Docs' },
	{ name: 'Doc', validator: vindication.validate }
)
let model = gen.model

// create a mongoose record by some JS object
let record = new model( prototype )

// save the record with validation. In case of validation issues, an Error will be thrown.
record.save()

And that's it!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published