【发布时间】:2016-12-27 02:24:45
【问题描述】:
我有多个路线。如何通过在组路由的 GET 方法中调用用户路由(GET 方法)来获取数据?这样做的最佳方法是什么?
我的 app.js 看起来像这样:
var express = require('express');
var routes = require('./routes/index');
var users = require('./routes/users');
var groups = require('./routes/groups');
var app = express();
app.use('/', routes);
app.use('/users', users);
app.use('/groups', groups);
module.exports = app;
app.listen(3000);
然后我还有另一个文件 routes/users.js:
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('GET ON THE users!');
});
module.exports = router;
还有一条路由routes/groups.js:
var express = require('express');
var router = express.Router();
var otherRouter = require('./users')
/* GET groups listing. */
router.get('/', function(req, res, next) {
// call the get on users and retrieve all data from that request
res.send('GET for the groups');
});
module.exports = router;
【问题讨论】:
-
只需要计算出
/users路由的数据响应是什么的代码,并将其放在一个单独的函数中。然后从您要使用它的两个地方调用该函数。如果它是异步的,那么让函数返回一个用数据解析的承诺。然后,您可以在需要它的两个地方使用该异步接口。 -
您应该将其作为实际答案发布。我想我可以以某种方式调用现有的路由获取方法。谢谢您的回答! :)
-
我正在研究同样问题的答案,因为“你不应该那样做”的答案对我来说不够好:) 直接调用应用程序(类似于“runMiddleware” ' 答案/示例做到了,除了来自npmjs.com/package/node-mocks-http 的模拟)我觉得会产生一个很好的'内部运行'能力。也就是说,
app(mock_req, mock_res)然后检查响应。
标签: node.js express run-middleware