MySQL 即使在 try 语句中,查询也会使我的程序崩溃
MySQL Query crashes my program even when in try statement
找不到记录时出错Cannot read property 'id' of undefined
如何防止它崩溃并处理 "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*/}
我认为您应该添加适当的检查。 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*/}
找不到记录时出错Cannot read property 'id' of undefined
如何防止它崩溃并处理 "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*/}
我认为您应该添加适当的检查。 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*/}