如何在express.js中使用嵌套中间件

时间:2015-10-14 10:48:49

标签: javascript node.js express nested middleware

我想从代码的实际结构进行更改。这是我的实际代码:

questionList.count().then(function (count) {
     var res = count; 
});

if (res < 3) ...

现在我想将上面的代码更改为此(请随时告诉我这是否是在Node.js中处理的好方法):

Image img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);

我应该如何写上面的//index.js var routes = require('./routes'); var subdomain = require('express-subdomain'); //require express app with settings var app = require('./app'); //export the application module.exports = app; // routes request like endusers-api.mydomain.ext/ app.use(subdomain('endusers-api', routes.apis.endusers)); // routes request like mydomain.ext/ app.use(routes.webapps.endusers); //routes/index.js var apis = {endusers: require("./apis/endusers")} var webapps = {endusers: require("./webapps/endusers")} var routes = {apis: apis, webapps: webapps} module.exports = routes; //routes/apis/endusers var express = require('express'); var route = express.Router(); var logger = require('../../lib/logger'); route.get('/', logger("endusers-api-access"), function(req, res, next) { res.json({ "name" : "Endusers API" }); }); module.exports = route; //routes/webapps/endusers.js var express = require('express'); var route = express.Router(); var logger = require('../../lib/logger'); route.get('/', logger("endusers-webapp-access"), function(req, res, next) { res.render('endusers/index', {title: 'Homepage'}); }); module.exports = route; 部分。看起来我们需要嵌套的中间件(一个中间件调用另一个中间件)。请你的建议。

1 个答案:

答案 0 :(得分:0)

我通过express.Router()。all()方法找到了答案。

&#13;
&#13;
//middlewares/apis/endusers.js
var routes = require('../../routes');
var express = require('express');
var middleware = express.Router();

middleware.all('/',subdomain('endusers-api', routes.apis.endusers));
//the two next lines are alternatives to the line above 
//middleware = subdomain('endusers-api', routes.apis.endusers); //can assign only one route
//middleware.use(subdomain('endusers-api', routes.apis.endusers)); // can use many routes

module.exports = middleware;


//middlewares/webapps/endusers.js
var routes = require('../../routes');
var express = require('express');
var middleware = express.Router();

middleware.all('/', routes.webapps.endusers);
//the two next lines are alternatives to the line above 
//middleware = routes.webapps.endusers; //can assign only one route
//middleware.use(routes.webapps.endusers); // can use many routes

module.exports = middleware;
&#13;
&#13;
&#13;