在多个文件中重构express app.js

时间:2018-12-03 19:10:06

标签: express refactoring

我尝试根据它们的路由在多个文件中重构我的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))
})

我的问题:如何使用这2个函数在多个文件中重构我的路线?有没有办法导出这些功能?

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

创建一个文件config.js或middleware.js,然后将其导入并在您的路由中使用。