从另一个路由中快速调用GET方法

我有多条路线。 如何通过在组路由的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; 

另一个路由路由/ 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; 

谢谢! 🙂

       

网上收集的解决方案 "从另一个路由中快速调用GET方法"

你不应该使用路由。 只需调用负责从GET组路由中检索用户的function,并使用该数据执行所需的操作。 你提出的方式是非常昂贵的,因为你将不得不做一个http调用。

为了简单起见,我假设你的逻辑是同步的,数据存储在data / users.js中:

 var data = [{id:1, name: "one"},{id: 2, name: "two"}]; module.exports = function(){ return data; }; 

在routes / users.js中:

 var express = require('express'); var router = express.Router(); var getUsers = required('./../data/users'); router.get('/', function(req, res, next) { res.send(getUsers()); }); 

在routes / groups.js中:

 var express = require('express'); var router = express.Router(); var otherRouter = require('./users') var getUsers = require('./.../data/users'); router.get('/', function(req, res, next) { var users = getUsers(); //do some logic to get groups based on users variable value res.send('GET for the groups'); }); 

您可以使用run-middleware模块

 app.runMiddleware('/pathForRoute',{method:'post'},function(responseCode,body,headers){ // Your code here }) 

更多信息:

  • Github & NPM中的模块页面;
  • 使用运行中间件模块的例子

披露:我是这个模块的维护者和第一个开发者。