【问题标题】:NodeJS - How can I check if a MySQL result is undefined/empty?NodeJS - 如何检查 MySQL 结果是否未定义/为空?
【发布时间】:2021-11-10 22:52:35
【问题描述】:

有谁知道如何检查 NodeJS MySQL 结果是否为空/空?我要做的是(非常简洁地解释)检查结果 5 是否为空,如果不是,则执行一个操作(在这种情况下为 console.log)。

这是没有所有细节的代码,为了简化事情,但是在执行它时我发现“结果”没有定义

           con.query("SELECT tag, message FROM list1", function (err, result) {
            if (err) {
              console.log('Error: ' + err)
            }
          });
        
          if(!result[5] == undefined) {
              console.log('Result 5 exists')
          }

【问题讨论】:

  • 因为result[5]在回调范围之外
  • 呃,是的,我很笨。非常感谢!我之前没有注意到,因为真正的代码是如此之大,以至于实现起来有点复杂^^

标签: node.js node-mysql


【解决方案1】:

我强烈推荐你使用这个模式。

con.query('SELECT tag, message FROM list1', [info] function(err, row, fields) {
  if(err) {
    return console.log('Error1');
  } else if (!row.length) {                                                   
    return console.log('Error2');
  } else if (!row[0].something) {
    return console.log('Error3');
  }

  console.log('Works');
})

它使用"falsy" 检查行[0]。如果值为 undefined、null 或空字符串,则返回 false 的东西。它还修复了注入攻击向量。

【讨论】:

    【解决方案2】:

    在底部的if语句中,使用typeof result[5] !== 'undefined'

    您当前的方法检查 result[5] 的值是否等于 undefined,但如果 result[5] 不存在,则会崩溃。如果变量不存在,检查类型将返回“未定义”。

    编辑代码:

    con.query("SELECT tag, message FROM list1", function (err, result) {
        if (err) {
            console.log('Error: ' + err);
        }
    });
        
    if(typeof result[5] !== 'undefined') {
        console.log('Result 5 exists');
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-19
      • 2013-05-09
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      相关资源
      最近更新 更多