charbet
@charbet

Как вынести маршруты в отдельные файлы?

Есть файл, в котором прописанно создание сервера на express и куча маршрутов по типу
app.get('/user', function(req, res) {
    if(req.isAuthenticated() && req.user.role == 'user')
        res.render('user');
});

app.post('/changeRole', function(req, res){
    console.log(req.body);
    pg.connect(connectionString, function(err, client, done){
        console.log(req);
        if(err){
            return console.error('error feetching client from pool', err);
        }
        client.query('UPDATE items SET role=($1), change=($2) WHERE name=($3)', [req.body.role, 
        	req.body.role == 'user' ? 'true' : 'false', req.body.name]);
        done();
    });
});

Каким образом можно вынести эти маршруты в отдельные файлы? Или даже не сами маршруты, а их функции-обработчики.
  • Вопрос задан
  • 282 просмотра
Пригласить эксперта
Ответы на вопрос 2
teknik2008
@teknik2008
Расскажите про GOLANG. Мне интересно
Скажем назовем файл handlers.js с таким содержимым
handlers.js
module.exports.getUser = (req, res) => {
    if (req.isAuthenticated() && req.user.role == 'user')
        res.render('user');
}


module.exports.postChangeRole = (req, res) => {
    console.log(req.body);
    pg.connect(connectionString, function (err, client, done) {
        console.log(req);
        if (err) {
            return console.error('error feetching client from pool', err);
        }
        client.query('UPDATE items SET role=($1), change=($2) WHERE name=($3)', [req.body.role,
        req.body.role == 'user' ? 'true' : 'false', req.body.name]);
        done();
    });
}

А файле роутера его подключим
router.js
var handlers=require('./handlers');

app.get('/user', handlers.getUser);
app.post('/changeRole',handlers.postChangeRole);
Ответ написан
Комментировать
@Abcdefgk
Берёте вот эту штуку
function(req, res) {
    if(req.isAuthenticated() && req.user.role == 'user')
        res.render('user');

и делаете так:
module.expotrts = function(req, res) {
    if(req.isAuthenticated() && req.user.role == 'user')
        res.render('user');
};

, - назвав этоfoo.js

А потом так:
app.get('/user', require('./foo'));
Всего делов
Ответ написан
Ваш ответ на вопрос

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

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