NodeJS TypeError:无法读取寄存器中未定义的属性(阅读“username')

8tntrjer  于 2023-10-22  发布在  Node.js
关注(0)|答案(1)|浏览(97)

当我键入的用户名是有在表“用户”我没有面临任何错误,但当我键入错误的名称,这是用户名是没有在表中我面临的错误,这是错误和代码如下所附.

export const register = (req, res) => {
  //CHECK USER IF EXISTS

  const q = "SELECT * FROM users WHERE username = ?";

  const result = db.query(q, [req.body.username]);

  db.query(q, [req.body.username], (err, result, data) => {
    if (err) return res.status(500).json(err);
    if (data.length) return res.status(409).json("User already exists!");

    //CREATE A NEW USER
    //Hash the password
    const salt = bcrypt.genSaltSync(10);
    const hashedPassword = bcrypt.hashSync(req.body.password, salt);

    const q =
      "INSERT INTO users (`username`,`email`,`password`,`name`) VALUE (?)";

    const values = [
      req.body.username,
      req.body.email,
      hashedPassword,
      req.body.name,
    ];

    db.query(q, [values], (err, data ) => {
      if (err) return res.status(500).json(err);
      return res.status(200).json("User has been created.");
    });
  });
};
5gfr0r5j

5gfr0r5j1#

您需要将data.length更改为result.length,数据包含有关执行的一些信息,因此它将始终是真实的:

db.query(q, [req.body.username], (err, result) => {
        if (err) return res.status(500).json(err);
        if (result.length) return res.status(409).json("User already exists!"); 🟥 //change to result

你也可以删除这一行,它没有被使用

const result = db.query(q, [req.body.username]);

相关问题