sequelize findOne не находит userId, когда он используется, если он находится в базе данных - PullRequest
1 голос
/ 30 мая 2020

Я использую node.js / express / sequelize для входа в систему пользователя. Я тестирую запросы в почтальоне, чтобы узнать, получит ли он что-нибудь. Я тестирую пользователя и pw, которые, как я знаю, находятся в базе данных, но мой запрос findOne в sequelize возвращает значение null, даже если проверяемое имя находится в базе данных. Вот рассматриваемый запрос:

    let {  userId, pw } = req.body
  try{
    const foundUser = await User.findOne({ where: { userId: userId } });
    if (foundUser === null) {
        return res.status(401).send({ auth: false, token: null,error: 'name not found' });
    } else {
        const passwordIsValid = bcrypt.compareSync(pw, foundUser.pw);
        if (!passwordIsValid) return res.status(401).send({ auth: false, token: null,error: 'name not found' });
        const token = jwt.sign({ id: foundUser.id}, config.secret, {
            expiresIn: 86400 // expires in 24 hours
          });
        res.status(200).json({auth:true,token:token});
    }

  } catch (err) {
    res.status(500).json(err);
  }

}

my json

У меня есть body-parser, реализованный для описания изображения jsonenter здесь по индексу js и маршрутизации работает так, как значения userId и pwd попадают в запрос findOne. Однако он по-прежнему говорит, что после запроса нет результатов. Терминал запускает следующее (userId - slim)

Executing (по умолчанию): SELECT id, username, userId, pw, createdAt, updatedAt FROM users AS users WHERE users. userId = 'slim';

'slim' находится как в Json, так и в разделе 'userId' базы данных

1 Ответ

1 голос
/ 30 мая 2020

Оказывается, проблема заключалась в том, что в разделе userId моей базы данных было более одного «slim», это было забавно. Когда я ввел действительно уникальное значение для userId, он вернул токен, как и ожидалось. Возможно, это кажется очевидным, но важно, чтобы это значение вызывало аутентификацию в unique.

...