node express mysql连接错误处理优化

时间:2016-11-20 00:24:29

标签: mysql node.js

我的路线中有很多代码,如下所示:

connection.query("query one", function(err, rows){
    if(err){
        console.log(err);
    }else{
        connection.query("query two", function(err, rows){
            if(err){
                console.log(err);
            }else{
                connection.query("query three", function(err, rows){
                    if(err){
                        console.log(err);
                    }else{
                        connection.query("query four", function(err, rows){
                            if(err){
                                console.log(err);
                            }else{

                            }
                        });
                    }
                });
            }
        });
    }
});

我最终得到了这么多“if(err)”。我想知道是否有更优化的方法可以同时有效地处理这些错误。我可以编写一个带回调的函数来处理所有这些错误:

var connection2 = function(connection, query, callback){
    connection.query("query one", function(err, rows){
        if(err){
            console.log(err);
        }else{
            callback(rows);
        }
    });
}

通过这种方式,我可以摆脱所有“if(错误)”。 有没有更好的解决方案,想法或参考?

1 个答案:

答案 0 :(得分:1)

你可以使用Promises,那么你的代码就像这样

ada_n00b@wasted_planet ~/Desktop/aws_hello_world $ gprbuild
using project file default.gpr
Error: no native compiler found for language 'ada', default runtime 
default.gpr:2:06: unknown project file: "aws"
gprbuild: "default.gpr" processing failed

您需要一个返回该

的Promise的查询函数
query('...').then(rows => {
}).then(query('...')).then(rows => {
}).then(query('...')).then(rows => {
}).catch(err => {
  console.log(err)
})