Затем вызывается промежуточное ПО, но программа все еще зависает - PullRequest
0 голосов
/ 16 мая 2018

Я написал простое промежуточное ПО для добавления чего-либо к объекту запроса при каждом запросе.Независимо от того, какой путь выберет поток в какой-то следующей точке, должен быть вызван ответ, однако ответ никогда не выполняется, и поэтому все мои маршруты, определенные после него, недоступны.Что-то не так с моим кодом?

Промежуточное программное обеспечение:

module.exports = (db) => {
    return function(req, res, next) {
        if(req.isAuthenticated()){
            debugger;
            db.user.findOne({where:{id:req.user.id}})
                .then((user)=>{
                    //set user permission
                    if(user.permission_id === 1){
                        //user is an Client
                        req.userIdentity = 'client';
                    }else if(user.permission_id === 2){
                        //user is a Coach
                        req.userIdentity = 'coach';
                    }else if(user.permission_id === 3){
                        //user is Admin
                        req.userIdentity = 'admin';
                    }

                    //set user status
                    if(user.user_status_id === 1){
                        req.userStatus = 'active';
                    }else if(user.user_status_id === 2){
                        req.userStatus = 'inactive';
                    }else if(user.user_status_id === 3){
                        req.userStatus = 'pending';
                    }

                    next();
                });
        }
        else{
            return next();
        }
    }
};

Я называю это так в app.js:

 app.use(passport.initialize());
 app.use(passport.session());
require('./services/passport');

//get identity of user. ie client, coach, or admin
const userIdentity =require('./services/userIdentity');
app.use(userIdentity(db)); <====== this is the middleware

//initiate route handlers
app.use('/login', require('./routes/authRoutes'));
app.use('/tiles', require('./routes/tileRoutes'));
app.use('/user-info', require('./routes/userRoutes'));

//this path MUST stay below other route handlers
app.get('*', (req, res)=>{
    res.sendFile(path.join(__dirname, './client/build/index.html'));
});

ОБНОВЛЕНИЕ **** добавил .catch(err=>res.send(err)); чтобы посмотреть, было ли это, но это не так.Я использовал оператор отладчика для пошагового выполнения кода, и вызов базы данных определенно возвращает то, что должен.Мои if / elses все проходят по мере необходимости, а затем ничего, приложение просто останавливается.

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