【问题标题】:node.js / express / mysql / serialport / socket.ionode.js/express/mysql/serialport/socket.io
【发布时间】:2014-02-25 16:35:17
【问题描述】:

我正在使用这个问题标题中提到的所有模块来处理这个项目。 当我发送一条短信时,计算机可以通过串口读取它,它会做的第一件事就是查看该号码是否在数据库中注册。这是它的代码:

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' 将不存在。问题是如果号码未注册,我不知道如何编辑此查询以添加不同的行为,因为在实施系统时,可能会收到来自随机电话号码的消息。

【问题讨论】:

    标签: mysql node.js express serial-port socket.io


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了,成功了!我不认为在评估时一点一点地进入数组是解决方案。谢谢
    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2012-04-27
    • 2014-10-20
    • 1970-01-01
    • 2014-06-04
    • 2012-05-22
    相关资源
    最近更新 更多