express-crud v4.0.1
express-crud
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})
.
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago