Global Variable in app.js accessible in routes?

前端 未结 13 1616
南笙
南笙 2020-11-28 21:29

How do i set a variable in app.js and have it be available in all the routes, atleast in the index.js file located in routes. using the express fra

13条回答
  •  無奈伤痛
    2020-11-28 22:30

    I solved the same problem, but I had to write more code. I created a server.js file, that uses express to register routes. It exposes a function,register , that can be used by other modules to register their own routes. It also exposes a function, startServer , to start listening to a port

    server.js
    
    const express = require('express');
    const app = express();
    
    const register = (path,method,callback) => methodCalled(path, method, callback)
    
    const methodCalled = (path, method, cb) => {
      switch (method) {
        case 'get':
          app.get(path, (req, res) => cb(req, res))
          break;
        ...
        ...  
        default:
          console.log("there has been an error");
      }
    }
    
    const startServer = (port) => app.listen(port, () => {console.log(`successfully started at ${port}`)})
    
    module.exports = {
      register,
      startServer
    }
    

    In another module, use this file to create a route.

    help.js
    
    const app = require('../server');
    
    const registerHelp = () => {
      app.register('/help','get',(req, res) => {
        res.send("This is the help section")
      }),
      app.register('/help','post',(req, res) => {
        res.send("This is the help section")
      })}
    
    module.exports = {
      registerHelp
    }
    

    In the main file, bootstrap both.

    app.js
    
    require('./server').startServer(7000)
    require('./web/help').registerHelp()
    

提交回复
热议问题