[usedIf在数据库中时,sequelize findOne找不到用户标识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[usedIf在数据库中时,sequelize findOne找不到用户标识相关的知识,希望对你有一定的参考价值。

我正在使用node.js / express / sequelize用户登录。我正在测试在邮递员中发出的请求,以查看是否得到任何东西。我正在测试一个我知道在数据库中的用户和密码,但是即使测试名称在数据库中,我在sequelize中的findOne查询也返回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

我已经在索引js上实现了用于jsonenter图像描述的正文解析器,并且路由的工作方式是userId和pwd值使其进入findOne查询。但是它仍然说查询之后没有结果。终端运行以下命令(userId为'slim')

正在执行(默认):从id中选择usernameuserIdpwcreatedAtupdatedAtusers作为users,在users中。userId ='slim ';

'slim'既在Json中,又在数据库的'userId'部分中]]

我正在使用node.js / express / sequelize用户登录。我正在测试在邮递员中发出的请求,以查看是否得到任何东西。我正在测试我知道在数据库中的用户和密码,但是我的findOne查询...

答案

事实证明,这是因为我的数据库的userId部分中存在多个'slim',它表现得很滑稽。当我为userId输入一个真正唯一的值时,它按预期返回了令牌。也许看起来很明显,但重要的是该值要求唯一身份验证。

以上是关于[usedIf在数据库中时,sequelize findOne找不到用户标识的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 Node.js 中的 Sequelize 从 DB 中选择数据

如何在sequelize中选择案例查询?

Sequelize - 如何提取具有 1 个关联记录的记录并按关联记录属性排序

在 MySQL 中使用 sequelize 自动递增 id

Sequelize:在 PostgreSQL 的 JSON 数据类型上使用 $like

如何在 Sequelize.js 中使用数据库连接池