【问题标题】:MySQL Query crashes my program even when in try statement即使在 try 语句中,MySQL Query 也会使我的程序崩溃
【发布时间】:2018-06-13 02:00:46
【问题描述】:

找不到记录时出错Cannot read property 'id' of undefined 如何防止它崩溃并处理“未定义”?

let blacklisted = false;
    let conStr = "SELECT * FROM `blacklist` WHERE `id` = '"+message.author.id+"'"; 
    con.query(conStr, function(error, result, field) {
        console.log(result[0].id);
        if(result[0].id){
            console.log("Van")
            blacklisted = false;
        }
    });

if (message.author.id !== "397487086522990602" && blacklisted){/*Actual Code*/}

【问题讨论】:

  • 你可以检查result.length === 1
  • result[0](当你有错误时)不存在(为空)

标签: mysql node.js discord.js


【解决方案1】:

我认为您应该添加适当的检查。 Try catch 基本上是针对连接/查询执行相关的失败,而不是针对未返回数据的情况。 所以只需添加检查结果 [0] 是否存在。

因此,以下代码应该可以满足您的目的:

let blacklisted = false;
    let conStr = "SELECT * FROM `blacklist` WHERE `id` = '"+message.author.id+"'"; 
    con.query(conStr, function(error, result, field) {
        if(result[0] && result[0].id){ // add check for result[0]
            console.log("Van")
            blacklisted = false;
        }
    });

if (message.author.id !== "397487086522990602" && blacklisted){/*Actual Code*/}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多