Mongoose.js: найти пользователей, затем проверить значение пользователя - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь проверить, является ли пользователь администратором, но я не могу получить это значение.Когда я регистрирую console.log (user), я получаю все эти значения:

email: 'testone@hotmail.com',
password:'$2b$10$mMyZkF3y8wxFTXUNgd/giuDvbaXfTFxlYECQmHgvAHDd4NB5CNpsq',
role: 'admin'

Теперь, как мне проверить, является ли роль пользователя === для 'admin'?Я пытался сделать user.role, req.userData.role === 'admin', но я не могу найти его, потому что он говорит мне, что он не определен.

router.delete("/:id",
  authCheck,
  (req, res, next) => {
    User.find()
      .then(user => {
        console.log('*this log gives me undefined*', user.role);
        if (!req.userData.role === 'admin') {
          Post.deleteOne({
            _id: req.params.id,
            poster: req.userData.userId,
          }).then(result => {
            if (result.n > 0) {
              res.status(200).json({
                message: "Deletion successful!"
              });
            } else {
              res.status(401).json({
                message: "Not authorised!"
              });
            }
          })
        }
      })
  });

Я знаю, что большинство из вас найдут это супер простым, но я толькоплохо знаком с бэкэндом, поэтому я решил опубликовать это как свою последнюю надежду на исправление, большое спасибо!

1 Ответ

0 голосов
/ 06 июля 2018

Я думаю, User.find() дает вам массив документов, а не объект документа.

Попробуйте user[0].role

!req.userData.role === 'admin' также является проблемой.
Это должно быть req.userData.role !== 'admin' или !(req.userData.role === 'admin')

Кроме того, похоже, что ваше приложение уже загружает пользователя из базы данных и подключает его к req. passport.js или что-то еще, должно быть, делает это. Если это так, вам не нужно снова делать User.find(), поскольку это уже выполняется вашим механизмом аутентификации. Это как раз то, что запрашивающий, если вы загружаете какого-то другого пользователя для чего-то другого, проигнорируйте эту напыщенную речь.

Кроме того, если вам нужна только одна запись, соответствующая вашему запросу, попробуйте использовать findOne вместо find

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