Как передать req.user из express -validator в следующее промежуточное ПО - PullRequest
0 голосов
/ 07 марта 2020

У меня идет проверка электронной почты с express -validator, я хочу передать req.user из express -validator следующему промежуточному программному обеспечению. Я попробовал это:

body("email")
.custom((value, { req}) => {
    User.findOne({ email: value})
      .then(user => {
        if (!user) {
          throw new Error("No account found with this email"); 
        } else {
          req.user = user; // this is undefined in next middleware
          return true;
        }
      })
      .catch(
        err => console.log(err);
      );

как я могу установить req.user = user?

1 Ответ

0 голосов
/ 08 марта 2020

Вы можете установить промежуточное ПО, которое проверяет электронную почту пользователя, следующим образом:

настроить ваше промежуточное ПО

валидатор. js

const validator = value => async (req, res, next) => {
  try {
    const user = await User.findOne({ email: value });
    if (user) {
      res.user = user;
      next();
    }
    return res.status(401).json({ data: 'No account found with this email' });
  } catch (error) {}
};

module.exports = validator;

включите ваше промежуточное ПО в маршрут, который вы хотите, чтобы он работал:

пользователь. js

const validator = require('<path to your validator middleware>');
const router = express.Router();

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

 //DO SOMTHING

}

промежуточное ПО проверит ввод value и проверит Это. надеюсь, это имеет смысл, удачи!

...