【问题标题】:Node JS : Can't access the data returned by MySQLNode JS:无法访问 MySQL 返回的数据
【发布时间】:2021-11-06 19:45:28
【问题描述】:

我正在尝试将数据库中密码的哈希值与表单中提交的密码进行比较。

所以我有一个登录函数,它通过他的电子邮件地址检索用户,并将他在数据库中的密码哈希与用户发送的密码哈希(使用 bcrypt)进行比较。这里是:

exports.login = (req, res, next) => {
  async function checkUser() {
    const { user_email, user_password: clearPassword } = req.body;
    let sql = `SELECT user_password FROM users WHERE user_email=${user_email};`;
    db.query(sql, async (err, result) => {
      if (err) {
        res.status(404).json({ err });
        throw err;
      }
      // const result1 = Object.values(JSON.parse(JSON.stringify(result)));
      console.log("Résult after transformation : ", result);
      console.log(typeof result, typeof clearPassword);
      const match = await bcrypt.compare(clearPassword, result);
      if (match) {
        console.log("match :)");
      } else {
        console.log("not match :(");
      }
    });
  }
  checkUser();
};

问题是每次我提交密码时都会出错:; 这是错误: 密码必须是字符串,而我有一个对象。我尝试将其转换为带有注释行的字符串: // const result1 = Object.values ​​​(JSON.parse (JSON.stringify (result)))

但没有任何变化,结果(或结果1)始终是一个对象。

请问如何比较我的两个密码?

【问题讨论】:

    标签: mysql node.js bcrypt


    【解决方案1】:

    最后,我已经完成了,并且成功了:

    const resultString = result[0].user_password
    

    现在我的对象是一个字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2017-05-16
      • 1970-01-01
      • 2019-09-26
      相关资源
      最近更新 更多