简体   繁体   中英

How to export get request parameters to another JS file

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; 
};

Console Log:

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

When I try to access these values from a different js file they print as undefined I am using postman to simulate values

The values will log from here but print undefined from the other js file

Is there a way to correct this I'm not sure what I am doing wrong the values are loading into "inputSwitch" but are not coming out on the simulate.js side

You're exporting on an event which isn't a good idea. What you can do instead is call a function in the other file where you need values with the values.

Example

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(){...}
}

First of all, while using youre favorite webserver like Express, you request aka (req) will/could flow amongst middleware before reaching your specific endpoint. Which means your req params are accessible at anytime there which could help you for specific code logic middleware-the-core-of-node-js-apps .

I agree with vibhor1997a, you should not export something there, basically you only module.exports "things" at the end of a file, not something at run-time.

You could do if you really want to deal with switchInput in another file do :

  • do what vibhor1997a suggest (sync or async function)
  • have a middleware before reaching your endpoint
  • raised an event with your switchInput as argument example

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM