@unituser

Как можно вынести это в Middleware ExpressJS?

Добрый день, уже очень долго думаю, как же можно вынести это в middleware, чтобы не писать это каждой странице?
Не обязательно нужно быть авторизованным, чтобы попасть на эти страницы. Пользователь может зайти на них и без авторизации, но если пользователь авторизовался из базы данных выводятся определённые данные.

router.get('/', (req, res) => {

    if (req.isAuthenticated()) {

        id = req.user.id

        const sql = 'SELECT * FROM users WHERE steamid = ' + id + ' || vkontakteid = ' + id + ' || googleid = ' + id + ''

        pool.query(sql, function(err, result) {

            if (err) return console.log(err)

            res.render('index', {
                titlePage: 'Index',
                data: result
            })

        })

    } else {
        res.render('index', {
            titlePage: 'Index'
        })
    }
})
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
hzzzzl
@hzzzzl
как-то так, вероятно запутался в скобках

router.get('/', getData, (req, res) => {
  res.render('index', {
    titlePage: 'Index'
    // или data или null
    data: req.data
  })
})


// middleware
function getData(req, res, next) {
    req.data = null

    if (!req.isAuthenticated()) return next()

    // auth ok
    const id = req.user.id
    const sql = 'SELECT * FROM users WHERE steamid = ' + id + ' || vkontakteid = ' + id + ' || googleid = ' + id + ''

    pool.query(sql, function(err, result) {
        if(err) return next()

        req.data = result
        next()
    })
  
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы