如何使用 NodeJs MySql2 库 async/await 捕获连接错误

Nea*_*ers 7 shared-libraries node.js async-await

NPM 和 GitHub上的文档没有显示如何在建立连接时捕获异常。我是根据查询方法的工作原理猜测的。那么作为新库的新手,我是否必须阅读代码才能弄清楚它?或者我缺少一些常见的标准做法吗?我故意输入了错误的密码只是为了测试错误处理。

我应该尝试/捕获,还是期望返回一个 err 对象?如果它们在查询方法上返回 err 对象而不是在连接方法上返回 err 对象,是否不一致?

使用 Amazon AWS Aurora 作为数据存储。

const mysql = require('mysql2/promise'); 获取数据();

async function GetData() {

    const config = require("config");
    const dbConfig =  config.get('AWS.Database01TestErr');  
    console.log ("const dbConfig:"); 
    console.dir(dbConfig, { depth: null });

    const [errConn, connection] = await mysql.createConnection(dbConfig);
    if (errConn) throw errConn;
    mysql.createConnection(dbConfig);
    console.log ("Got the database connection"); 

    //query = "select ID, user_nicename, user_email from wp_users where user_login = 'hebgadmin' ";
    query = "select ID, user_nicename from wp_users limit 3 ";
    console.log ("Starting query"); 

    const [rows, fields, err] = await connection.query (query); 
    if (err) throw err;
    // console.log(rows); 

    console.log("Show Data Retrieved");   
    rows.map(e=>{ 
          console.log("ID="+ e.ID + " NiceName=" + e.user_nicename); 
     })   

    console.log ("The end"); 
    process.exit();   // Else Node hangs and must hit cntl-break to exit 

} 
Run Code Online (Sandbox Code Playgroud)

部分输出:

(节点:2836)UnhandledPromiseRejectionWarning:错误:用户'adm test1'@'10.1.2.123'(使用密码:YES)在Object.createConnection(D:\ Project2 \ POC \ node_modules \ mysql2 \ promise .js:223)的访问被拒绝:31) 在 GetData (D:\Project2\POC\mySqlQuery_V3_Await.js:34:44)

Jam*_*uth 1

是的 try...catch 是 async/await 的模式

这是 mdn,其中有一些关于错误的讨论:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

这是 mongodb 文档中的类似代码,显示 try...catch:

http://mongodb.github.io/node-mongodb-native/3.2/reference/ecmascriptnext/crud/