jest
Version:
JavaScriptational State Transfer. JS restful API layer with Mongoose based resources. Inspired by python Tastypie
72 lines (60 loc) • 1.79 kB
JavaScript
var express = require('express')
, Resource = require('express-resource')
, util = require('util')
, api = require('../api')
, resources = require('../mongoose_resource')
, base_resource = require('../resource')
, cache = require('../cache')
, app = express.createServer();
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/api_db');
// create mongoose model
var User = mongoose.model('user', new Schema({
username: String,
email: String,
password : String,
index:Number
}));
// create api with path
var rest_api = new api.Api('/api/',app);
var MemoryCache = function() {
this.mem = {};
};
util.inherits(MemoryCache,cache.Cache);
MemoryCache.prototype.get = function(key,callback)
{
callback(null,this.mem[key]);
};
MemoryCache.prototype.set = function(key,value,callback)
{
this.mem[key] = value;
callback();
};
function extend(super,constructor)
{
util.inherits(constructor,super);
return constructor;
}
// create mongoose-resource for User model
var UserResource = extend(resources.MongooseResource, function()
{
UserResource.super_.call(this,User);
this.fields = ['username','index','id'];
this.default_query = function(query)
{
return query.where('index').gte(10);
};
this.filtering = {'index':0};
this.cache = new MemoryCache();
});
UserResource.prototype.get_object = function(req,id,callback)
{
UserResource.super.get_object.call(this,req,id,function(err,object)
{
callback(null,object.set('username','overriden'));
});
};
// register resource to api
rest_api.register_resource('users',new UserResource());
app.listen(80);