繁体   English   中英

快递:如何考虑路由回调

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM