【问题标题】:Cannot read property 'length' of undefined when trying to read the results of a MYSQL query尝试读取 MYSQL 查询的结果时无法读取未定义的属性“长度”
【发布时间】:2019-08-08 05:52:07
【问题描述】:

我在这个问题上被困了一段时间,我可能只是愚蠢,但我希望它没有那么糟糕。我的任务是使用 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' of undefined'

在过去的 10 个小时里,这段代码让我的大脑经历了很多事情,但我希望这不是一个新手错误!任何帮助将不胜感激!

【问题讨论】:

  • 您可能希望在if(error) 中添加一个返回值,因为目前即使出现错误它仍会尝试执行if(results.length > 0)

标签: javascript mysql node.js express typeerror


【解决方案1】:

您当前的代码将尝试检查results.length 无论是否有错误。如果有错误,results 可能是undefined,因此继续检查results.length 将抛出。考虑returning 在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;
  }
});

【讨论】:

  • 谢谢!它已经解决了问题!不敢相信我竟然错过了这么简单的东西:')
猜你喜欢
  • 1970-01-01
  • 2016-01-07
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多