尝试读取MYSQL查询的结果时,无法读取未定义的属性“ length”

时间:2019-03-17 20:28:36

标签: javascript mysql node.js express typeerror

我在这个问题上停留了一段时间,我可能只是个愚蠢的人,但我希望它还不错。我受命使用NodeJS + Express + MYSQL创建一个简单的系统。用户可以在其中登录和注销,同时检查现有的用户名/电子邮件

所以给出我目前错误的代码(已经经历了许多迭代和实现)

var userExists;
var emailExists;

var userCheck = 'SELECT * FROM users WHERE uname =' + req.body.email;

connection.query(userCheck, function (error, results) {
    if (error) {
        userExists = true;
        res.json({
            status: false,
            message: 'there are some error with query'
        })}
        if (results.length > 0) {
            userExists = true;
            res.json({
                status: false,
                message: 'Username already exists'
            });
        } else {

            userExists = false;
        }
});

我遇到了一个问题:

'TypeError:无法读取未定义的属性'length''

在过去的10个小时里,使用此代码我的头已经花了很多时间,但我希望这不是一个菜鸟的错误!任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您当前的代码将尝试检查.length中的results ,无论是否存在错误。如果有错误,则results可能是undefined,因此将继续检查results.length。考虑在return块底部放置if (error)

connection.query(userCheck, function (error, results) {
  if (error) {
    userExists = true;
    res.json({
      status: false,
      message: 'there are some error with query'
    });
    return;
  }
  if (results.length > 0) {
    userExists = true;
    res.json({
      status: false,
      message: 'Username already exists'
    });
  } else {
    userExists = false;
  }
});