jest
TypeScript icon, indicating that this package has built-in type declarations

0.1.22 • Public • Published

Jest

JavaScriptational State Stasfer for node.js with easy generating resource from Mongoose ORM

introduction

This module provides:

  • Resource base class with:
  • Authentication
  • Authorization
  • Pagination
  • Cache
  • Throttling
  • Validation
  • MongooseResource
  • Resources listing

synopsis

var express = require('express')
	, app = express.createServer(),
	, mongoose = require('mongoose')
	, Jest = require('jest');

var Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/app');

// create mongoose model

var User = mongoose.model('user', new Schema({
    username: {type: String, required: true},
    email: String,
    password: {type: String, validate: [function(v) { return true}, 'custom validate']},
    credits: {type: Number, min: 1, max: 230},
    role: {type: String, 'default': 'user' ,enum: ['user', 'admin']},
    date: {type:Date, 'default': Date.now},
    groups: [{name:String, permissions: [{name:String, expires:Date}]}]
}));

// create mongoose resource for User model

var UserResource = Jest.MongooseResource.extend({
	init: function(){
		// call Jest.Resource constructor
		// passing the Model User we created
		this._super(User);

		// use array to decide which fields will be visible by API
		// this.fields = ['username','credits'];
		// use tree object to decide recursively which fields to expose
		this.fields = {'username': true, 'credits': true, groups: {name: true, permissions: {name: true} }};

		// use list or
		this.update_fields = ['email', 'password'];

		// specify base query for the model
		this.default_query = function(query){
			return query.where('credits').gte(10);
		};

		// specify which fields can be used to filter
		this.filtering = {'credits': true};

		// which http methods are allowed
		this.allowed_methods = ['get', 'post', 'put'];
	}
})

var api = new Jest.Api('api', app);

api.register('users', new UserResource());

installation

$ npm install jest

documentation

There is none. But there is an example, and a test.

And maybe one day will be...

Package Sidebar

Install

Homepage

jestjs.io/

Version

0.1.22

License

MIT

Last publish

Collaborators

  • simenb
  • cpojer
  • rickhanlonii