所以我有这样的多条路线:
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
范围。
答案 0 :(得分:0)
我会像这样重构它:
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'));