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

问题描述 投票:0回答:1

我一直坚持这个问题,我可能只是愚蠢,但我希望它不是那么糟糕。我的任务是使用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:无法读取undefined'属性'length'

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

javascript mysql node.js express typeerror
1个回答
1
投票

您当前的代码将尝试检查.lengthresults,无论是否有错误。如果有错误,results可能是undefined,所以继续检查results.length将抛出。考虑return区块底部的if (error)ing:

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;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.