代码之家  ›  专栏  ›  技术社区  ›  Johan Rin

重构express应用程序。多个文件中的js

  •  0
  • Johan Rin  · 技术社区  · 6 年前

    我试着重构我的 app.js 根据路径将文件放入多个文件中。

    我的问题:我的路由具有依赖性,在文件开头定义了两个函数:

    const app = express()
    
    const cognitoExpress = new CognitoExpress({
      region: '<some text>',
      cognitoUserPoolId: '<some text>',
      tokenUse: 'access',
      tokenExpiration: 3600000
    })
    
    let cachedDb = null
    
    function isAuthenticated(req, res, next) {
      let accessTokenFromClient = req.headers.authorization
    
      if (!accessTokenFromClient)
        return res.status(401).send('Access Token missing from header')
    
      cognitoExpress.validate(accessTokenFromClient, function (err, response) {
        if (err)
          return res.status(401).send(err)
    
        res.locals.user = response
        next()
      })
    }
    
    function connectToDatabase(uri) {
      if (cachedDb && cachedDb.serverConfig.isConnected()) {
        return Promise.resolve(cachedDb)
      }
    
      return MongoClient.connect(uri, { useNewUrlParser: true })
        .then(client => {
          cachedDb = client.db('<some text>')
          return cachedDb
        })
    }
    

    我的路线定义如下:

    app.get('/users', isAuthenticated, (req, res) => {
      connectToDatabase(process.env.MONGODB_CONNECTION_STRING)
        .then((db) => {
          return db.collection('users').find().toArray()
        })
        .then(result => {
          return res.send(result)
        })
        .catch(err => res.send(err).status(400))
    })
    

    我的问题是:如何用这两个函数重构多个文件中的路由?有办法导出这些函数吗?

    谢谢你的帮助,

    1 回复  |  直到 6 年前
        1
  •  0
  •   ibn_Abubakre    6 年前

    创建一个文件。js或中间件。js,任何你喜欢的人,然后导入并在你的路线中使用它们。