如何使用路由器链接中间件

时间:2016-06-23 13:35:00

标签: node.js express

我正在使用Express 4.0,我很难连接中间件。我有2个路由器:一个作业路由器和一个招聘者路由器。 目前一切正常(我可以在这两个路由器上使用CRUD)但是我希望POST方法可以通过招聘人员路由器调用一个方法而且我不知道实现这个目的。

router / recruiter.js:

var express = require('express');
var router = express.Router();

/* GET recruiters listing. */
router.get('/', function(req, res, next) {
    var recruiters = [];
    //get recruiters
        res.json(recruiters);
});

function(err, req, res, next) {
   console.info("pseudo code for a function I'd like to call in the job.js file");
});

module.exports = router;

router / job.js:

var express = require('express');
var uuid = require('uuid4');
var router = express.Router();

var jobs = [];

/* GET job listing. */
router.get('/', function(req, res, next) {
    jobs = [];
    //get jobs
    res.json(jobs);
});

/* add jobs . */
router.post('/', function(req, res, next) {
    console.info('add job', req.body);

    var body = req.body;
    //I omit the parts where I check the req and save the object


    //At the moment I do this but I'd like to call a method within the recruiter router before sending the json back to the client.
    res.json({'jobs': []});
});

module.exports = router;

以下是app.js中的相关部分:

var job = require('./routes/job');
var recruiter = require('./routes/recruiter');

app.use('/job', job);
app.use('/recruiter', recruiter);

1 个答案:

答案 0 :(得分:1)

将我的评论转化为答案......

Express不提供在多条路线之间共享代码的任何特殊方式。如果您希望代码始终在路由处理程序之前执行,那么您当然可以使用公共中间件函数。

但是,如果你的代码共享案例是你只想要两条或更多路由能够从它们的路由实现中执行一些公共代码,那么这实际上只是一个简单的Javascript问题。您将公共代码放入共享函数,然后从两个或多个路由调用该函数。换句话说,您只需在路由之间共享代码,就像在任何其他Javascript函数中共享代码一样。快递在这方面不需要任何特别之处。这样做你总是在Javascript中这样做。

在Express中编写代码的人很容易陷入构建Express代码的方式,并且忘记了仍然可以使用常规的共享,常用函数来共享代码(我见过很多人都被这个) - 期望他们成为共享代码的“快速”方式。没有。只需通过创建一个包含公共代码的函数并从多个地方调用它来执行共享公共代码的常规Javascript方法。