refactor express app.js в нескольких файлах - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь выполнить рефакторинг моего 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 голосов
/ 03 декабря 2018

создайте файл, например, config.js или middleware.js, кого угодно, затем импортируйте и используйте их в своих маршрутах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...