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