gpt4 book ai didi

mysql - 通过NodeJS + MySQL登录时捕获异常错误

转载 作者:行者123 更新时间:2023-11-29 16:11:03 27 4
gpt4 key购买 nike

最近我一直在尝试学习NodeJS来设置登录过程,所以我决定写下所有错误并为它们设置异常(exception)。我的问题是如何确保每个 if 都对每个错误代码负责。我以前没有使用过 try 和 catch,所以这对我来说是一个新领域。另外,使用多个 try-catch 是否更好,或者我应该考虑使用 1 个 block ,例如可以使用开关(如果这里作为快速示例,则使用 else)。

  • Table with Status errors

0 - 没有与数据库连接。

1 - 连接正常,但我们没有任何访问权限 数据库或类似的东西。

2 - 一切正常。

3 - 好的,但在查询结果中找不到数据。

4 - 获取查询结果时出错。

5 - 其他。

module.exports = (username,password,connection ) => {
var data ={
"Status" : null,
"Data" : {} //JSON results inside of Data Json

}

try{
connection.query("SELECT id FROM players", function (error, results, fields) {

if (error){




data.Status = 0;
data.Data= "No connection can be established with the database";
return data
}

else if(error){

data.Status = 1;
data.Data= results + "Connection OK but no priviliges";
return data
}

else if(error){

data.Status = 2;
data.Data=results + "connection running";
return data
}

else if(error){

data.Status = 3;
data.Data=results + "No data found in query results";
return data
}

else if(error){

data.Status = 4;
data.Data=results;
return data
}

else if(error){

data.Status = 5;
data.Data=results;
return data
}


});
}


catch(e){

console.log(e);

data.Status= 2;
data.Data=null;
return data;

}


};

最佳答案

欢迎使用异步编程,您的 try/catch block 不会对任何 I/O 过程执行任何操作,所有错误均由回调函数中的 error 对象处理。 (除非您使用最后一个异步/等待 ES6 模式)

connection.query("SELECT id FROM players", function (error, results, fields) {
if (!error) { // no error, return results
data.status = 2;
data.Data = results;
return data;
}
// for all error code, please check mysql library document
// https://www.npmjs.com/package/mysql#error-handling
if (error.code === 'ER_ACCESS_DENIED_ERROR') {
data.Status = 1;
data.Data=results;
return data
}

// handle any other error codes
// if ....
});

编辑:请注意,module.exports 中的导出函数不会返回任何内容,因为您正在调用数据库查询,这是一个异步 I/O 过程,需要另一个回调函数来获取数据库返回的数据

关于mysql - 通过NodeJS + MySQL登录时捕获异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com