如何将获取请求参数导出到另一个JS文件

时间:2018-09-25 16:14:16

标签: javascript node.js express parameters export

app.js

app.get('/save', function(req,res){

var switchInput = { 
    sw1: req.query.switch1,
    sw2: req.query.switch2,
    sw3: req.query.switch3,
    sw4: req.query.switch4,
    sw5: req.query.switch5,
    sw6: req.query.switch6,
}

console.log(switchInput);  
module.exports = switchInput

res.send(switchInput); 

});

simulate.js

    var mongoose = require('mongoose');
    var suit = require('../app')

...

function batteryLife(t){  
    var elapsed = Date.now() - t;
    t_remaining = fullTime - elapsed; 
    t_battery = secondsToHms(Math.floor(t_remaining/1000));
   //console.log(Math.floor(elapsed/1000) + ' s');

    console.log(suit.sw1);

    return t_battery; 
};

控制台日志:

{ sw1: 'true',
  sw2: 'true',
  sw3: 'true',
  sw4: 'true',
  sw5: 'true',
  sw6: 'true' }
--------------Simulation started--------------
undefined
undefined
undefined
undefined
--------------Simulation stopped--------------

当我尝试从其他js文件访问这些值时,它们将打印为未定义状态,我正在使用邮递员模拟值

这些值将从此处记录,但在其他js文件中未打印

有没有办法纠正这个问题?我不确定自己做错了什么 这些值将加载到“ inputSwitch”中,但不会在simulate.js端显示出来

2 个答案:

答案 0 :(得分:0)

您要导出的事件不是一个好主意。相反,您可以做的是在另一个需要使用值的文件中调用一个函数。

示例

app.js

const simulate = require('./simulate');
app.get('/save', function(req,res){

var switchInput = { 
    sw1: req.query.switch1,
    sw2: req.query.switch2,
    sw3: req.query.switch3,
    sw4: req.query.switch4,
    sw5: req.query.switch5,
    sw6: req.query.switch6,
}

simulate(switchInput);

res.send(switchInput); 

});

simulate.js

module.exports = function(input){
   //have all your functions and code that require input here
   function foo(){...}
   function bar(){...}
}

答案 1 :(得分:0)

首先,在使用您喜欢的Web服务器(如Express)时,您要求aka(req)将/可能在中间件之间流动,然后到达您的特定端点。这意味着您的req参数可以随时访问,这可以帮助您实现特定的代码逻辑middleware-the-core-of-node-js-apps

我同意vibhor1997a,您不应在此处导出内容,基本上,您只能在文件末尾module.exports“东西”,而不是在运行时的东西。

如果您确实想在另一个文件中处理switchInput,可以这样做:

  • 执行vibhor1997a建议的操作(同步或异步功能)
  • 在到达端点之前拥有中间件
  • 使用您的switchInput作为参数example引发了一个事件