node package manager

mongoose-resource

Restful API layer with Mongoose based resources. Inspired by python Tastypie

Mongoose-Resource

Restful API framework 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') , util = require('util') , mongoose_resource = require('mongoose_resource');

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 = function() { UserResource.super_.call(this,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':null,,'credits':null,groups:{name:null,permissions:{name:null}}}; // 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':0}; // which http methods are allowed this.allowed_methods = ['get','post','put']; }; util.inherits(UserResource,mongoose_resouce.Resource);

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

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

installation

$ npm install vows

documentation

There is none. But there is an example, and a test. And maybe one day will be...