[英]Express: How to factor routes callback
所以我有多条这样的路线:
app.get('/user', function(req, res) {
model.find({}, function(err, docs) {
res.send(docs);
});
});
app.get('/user/:id', function(req, res) {
model.findById(req.params.id, function(err, doc) {
res.send(doc);
});
});
乘以很多。
我想知道它们是否是一种排除该回调函数的方法:
app.get('/user', function(req, res) {
model.find({}, sendInResponse);
});
app.get('/user/:id', function(req, res) {
model.findById(req.params.id, sendInResponse);
});
我的问题是res
范围。
我会像这样重构它:
var find = function (queryFn) {
return function (req, res, next) {
var query = queryFn.apply({ req: req, res: res });
model.find(query, function (err, docs) {
res.send(docs);
});
}
};
现在,您可以使用通用查询中间件,如下所示:
app.get('/user/:id', find(function () { return { id: this.req.params.id } });
这只是可能的提示,您甚至可以对其进行更多重构。 这是我创建的仅使用通用中间件的应用程序的路由:
app.get('/users/:username',
data.one('user', data_users.byUsername, 'params.username'),
data.many(data_grows.byUserId, 'locals.user.id'),
general.render('grows/index'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.