JSPM

jest

0.0.94
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 28959413
  • Score
    100M100P100Q211017F

JavaScriptational State Transfer. JS restful API layer with Mongoose based resources. Inspired by python Tastypie

Package Exports

  • jest
  • jest/package.json

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jest) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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...