Skip to content

Instantly share code, notes, and snippets.

@vaseker
Last active August 29, 2015 14:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vaseker/d1b576b44ab41f41bf56 to your computer and use it in GitHub Desktop.
Save vaseker/d1b576b44ab41f41bf56 to your computer and use it in GitHub Desktop.
Wrapper для express контроллеров
var Controller = function (name) {
if (!name) {
return new Error('Controller name is not defined!');
}
var controller = this.controller = require('./' + name);
Object.keys(controller).forEach(function (method) {
this.setMethod(method);
}.bind(this));
return this;
};
Controller.prototype.setMethod = function (method) {
this[method] = function (req, res) {
this.controller[method](req, res, function (err, data) {//возможно ли передавать в эту функцию req, res другим способом?
if (err) {
res.code(500).send(err);
}
return res.send(data);
});
}.bind(this);
};
//USAGE
var ctl = new Controller('test');
app.get('/test', ctl.list);
var model = require('../models/test');
exports.list = function (req, res, done) {
model.list(req.params, req.query).then(
function (data) {
done(null, data);
},
function (err) {
done(err);
}
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment