mysql - 当 usedIf 在数据库中时,sequelize findOne 找不到 userId

标签 mysql node.js express sequelize.js postman

我正在使用 node.js/express/sequelize 登录用户。我正在测试在 postman 中发出请求,看看它是否得到任何东西。我正在测试我知道在数据库中的用户和密码,但即使测试的名称在数据库中,我在 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

我在 index js 上为 jsonenter 图像描述实现了 body-parser,并且路由工作,因为 userId 和 pwd 值使其成为 findOne 查询。但是它仍然说查询后没有结果。终端运行以下(userId 是“slim”)

执行(默认): SELECT idusernameuserIdpwcreatedAtupdatedAt FROM users AS users WHERE usersuserId = 'slim';

'slim' 既在 Json 中又在 db 的 'userId' 部分

最佳答案

事实证明,问题是因为我的数据库的 userId 部分中不止一个“slim”,这很有趣。当我为 userId 输入一个真正唯一的值时,它按预期返回了 token 。也许这看起来很明显,但重要的是该值要求唯一的身份验证。

关于mysql - 当 usedIf 在数据库中时,sequelize findOne 找不到 userId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62102299/

相关文章:

php - 使用 OOP PHP 的 mysql.php 中出现 fatal error : Cannot access empty property,

c# - 更新现有行 mysql linq

node.js - npm sudo 全局安装 & unsafe-perm

javascript - 如何在 Node 博客应用程序中保留分页页面?

mongodb - node.js + express + mongodb 任何人都尝试过使用带有副本集的express' session 管理

php - 指定详细表单信息

像正则表达式一样的mysql全文通配符搜索

mysql - 在MySQL中使用外键从另一个表的列中选择数据

node.js - 既然 Cordova 插件已重命名并移植到 npm,如何添加它们?

logging - 如何传递连接记录器的参数?