Вы можете сделать это , как показано ниже: ?
router.post('/login', authController.login, async (req, res, next) => {
res.render('profile.ejs', {user: apiResponse.user});
});
?? Пожалуйста, прочтите документацию о Express Middleware .
Обновлено: Middleware
Убедитесь, что ваш authController выглядит следующим образом:
exports.login = async (req, res, next) => {
try {
const email = req.body.email;
const password = req.body.password;
const user = await User.findOne({ email }).select("+password");
if (!user) {
const error = new Error("Wrong Credentials");
error.statusCode = 401;
throw error;
}
const validPassword = await user.validPassword(password);
if (!validPassword) {
const error = new Error("Wrong Credentials");
error.statusCode = 401;
throw error;
}
const token = jwt.encode({id: user.id}, config.jwtSecret);
// passing your data to next function
// you can change exampleData with the 'variable' you want
req.exampleData = { user, token }
next();
} catch(err) {
next(err);
}
}
Если ваш authController такой же root ("папка") с вашими маршрутами, чем это выглядит так:
const { login } = require('./authController');
Итак, теперь вы можете вызывать authController следующим образом:
router.post('/login', login, async (req, res, next) => {
// your data: "user" and "token" from middleware
const { exampleData } = req;
console.log(exampleData);
res.render('profile.ejs', {user: exampleData});
});
Надеюсь, это поможет вам ?.