如何在另一个app.use()内部调用app.use()

时间:2019-07-28 12:33:11

标签: express

我有一个简单的服务器,例如:

/ ****服务器****** /

const express = require('express'),
    request = require('request'),
    parser = require('xml2json'), 
    app = express();

app.set('trig', {'name':false, 'date':false});
app.set('port', 3000);  

app.use('/api/login', require('./routes/_login.js'));
app.use('/api/tasks', require('./routes/_tasks.js'));

app.get('/api', (req, res) => {    
res.sendfile("index.html");
});


app.listen(app.get('port'), () => {});
// end

运行: app.use('/ api / tasks',require('./ routes / _tasks.js'));我必须设置触发-默认情况下,它的elementa为false 为此,我需要运行: app.use('/ api / login',require('./ routes / _login.js'));

如何在任务中运行登录路由?

/ ******** _login.js ******** /

var express = require('express'),
    request = require('request'),
    parser = require('xml2json'),
    router = express.Router();

var url = 'http://url';

router.get('/', function(req, res){
    var app = req.app;

    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || (req.connection.socket ? req.connection.socket.remoteAddress : null);
    var xml = `<xml><User="*****" Password="*****"/></xml>`;
    var options = {
        url: url,
        method: "POST",
        headers: {
            "Content-Type": "application/xml",
            "x-forwarded-for": ip,
            "Content-Length": Buffer.byteLength(xml)
        }, body: xml
    };

    request(options, function(error, response, body) {

      if (!error && response.statusCode == 200) {
            var json = parser.toJson(body);
            json = JSON.parse(json);
            var name= json.xml.res['trig'];
            var date = new Date();
            app.set('trig',{'name':name, 'date':date.setDate(date.getDate())});
            res.end();
      }else{
          res.send(error);
      }
    });
});

module.exports = router;

/ ******* _tasks.js ********* /

我需要将task.name传递到需要发送的xml中

我这样做:

  1. var app = req.app;
  2. var task = app.get('tasks');

现在我可以阅读它了,我需要做的只是检查它是否为假

var app = req.app;
var tasks = app.get('tasks');

if(!tasks.name){
    app.use('/api/login', require('./_login.js'));
}

这不起作用

var express = require('express'),
    request = require('request'),
    parser = require('xml2json'),
    router = express.Router();

router.get('/', function(req, res){
    var app = req.app;
    var tasks = app.get('tasks');

    if(!tasks.name){
        app.use('/api/login', require('./_login.js'));
    } 

    var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || (req.connection.socket ? req.connection.socket.remoteAddress : null);
    var url = 'http://url';
    var xml = `<xml type="tasks" trig="${task.name}"/>`;
    var options = { 
        url: url,
        method: "POST", 
        headers: {
            "Content-Type": "application/xml",
            "x-forwarded-for": ip,
            "Content-Length": Buffer.byteLength(xml)
        }, body: xml
    };

    request(options, function(error, response, body) {

      if (!error && response.statusCode == 200) {
            var json = parser.toJson(body);
            json = JSON.parse(json);
            res.jsonp(json);
            res.end();
      }else{
          res.send(error);
      }
    }); 

});

module.exports = router;

请给我一个提示,以使其正确 谢谢

0 个答案:

没有答案