Skip to content

jsdevel/node-express-crud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

express-crud NPM version Downloads Build Status Coveralls Status

Easily route a resource's crud methods to express apps!

##Example Here's a User resource that exposes some CRUD methods:

module.exports = {
  create:   function(query, model, cb){
  ....
  cb(null, ["create"]); //first argument is response status, second is array of response data
  },
  delete:   function(id, query, cb){},
  read:     function(query, cb){},
  readById: function(id, query, cb){},
  update:   function(id, query, model, cb){}
};

Here's how you add the routes to your express app:

var app = require('express')();
var User = require('./models/User');

require('express-crud')(app);

app.crud('users', User);

Here's how you add the routes to your express app using a formatted response object:

var app = require('express')();
var User = require('./models/User');
var opts = {
	formatResponse: function(result) {
		return {
			timestamp: Date.now(),
			payload: result
		};
	}
};

require('express-crud')(app, opts);

app.crud('users', User);

Now your express app has the following routes:

DELETE /users/:id
GET /users
GET /users/:id
POST /users
PUT /users/:id

Changing the param name

You can change the param name by specifying it at the end of your route:

app.crud('users/:userId', User);

Now your express app has the following routes:

DELETE /users/:userId
GET /users
GET /users/:userId
POST /users
PUT /users/:userId

###With some middleware

var authorizeMiddleware = function(req, res, next){//arity matters!
  if(req.query.username !== 'foo')return next(new Error('user not foo!'));
  next();
};
var fooMiddleware = function(req, res, next){next();};

app.crud('users', authorizeMiddleware, fooMiddleware, User);

Restrict access to resources by user

app.crud('settings/:settingId', authorizeMiddleware, function(req, res, next){
  //ensure that the resource get's the username.
  req.query.username = req.user.name;
  next();
}, SettingsResource);

Format your response

With any path

app.crud('/any/old/path/for/users', User);

Status Codes

When you call the callback given to resource methods without an error object as the first arg, express-crud will use either 204 or 200 depending on the context. If you wish to pass a non 2xx status code up to your application the preferred way is to assign a status property to your error object I.E. cb({status: 404}).

Reading req.body

Starting with express@4.x.x, body-parser isn't active by default. See #16 for a working example with the body-parser middleware.

About

Easily route a resource's crud methods to express apps!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •