繁体   English   中英

node.js / express / mysql / serialport / socket.io

[英]node.js / express / mysql / serialport / socket.io

我正在使用此问题标题中提到的所有模块进行此项目。 当我发送文本消息时,计算机可以通过串行端口读取它,并且要做的第一件事就是查看该号码是否已在数据库中注册。 这是该代码:

function consultarNumero(head, body, numero){
  connection.query('SELECT * FROM devices WHERE nro_telefono = "'+numero+'"', function(err, result){
    if(err){
      console.log(err);
    }else{
      if(result[0]['id']!=null){
        var idEmbarcacion = result[0]['id'];
        //readingData.dividirPartes(head, body, idEmbarcacion); <- some other function
      }else{
        return false;
      }
    }
  });
}

该代码有效,因为我用于测试的电话号码已在数据库中注册,但是,如果我从另一部手机发送消息,则会出现错误,提示“无法读取未定义的属性'id'”。

因此显然“ if(result [0] ['id']!= null)”不是正确的方法。 我已经尝试过“ if(result.length)!= 0”,但是即使未注册该数字,结果数组的长度也始终大于0,因为如果找不到任何内容,它将返回“未定义”。

当然,我知道如果没有注册hpone号码,那么'id'将不存在。 问题是我不知道如何在未注册电话号码的情况下编辑此查询以添加其他行为,因为在实施系统时,可以从随机电话号码接收消息。

如果在没有结果时result的确是undefined ,那么result[0]也将是undefined 以下示例不应通过if (result)的第一个评估,然后应该安全地到达else。

if (result && result[0] && result[0]['id']) {}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM