代码之家  ›  专栏  ›  技术社区  ›  NealWalters

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

  •  1
  • NealWalters  · 技术社区  · 7 年前

    医生来了 NPM and GitHub 不显示建立连接时如何捕获异常。根据查询方法的工作原理,我在猜测。作为一个新库的新手,我需要阅读代码才能理解它吗?还是我缺少一些常见的标准做法?我故意输入了一个错误的密码,只是为了测试错误处理。

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

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

    const mysql=require('mysql2/promise'); GetData();

    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 
    
    } 
    

    部分输出:

    (节点:2836)未经处理的PromisejectionWarning:错误:拒绝访问 用户'adm test1'@'10.1.2.123'(使用密码:是) 反对。createConnection(D:\Project2\POC\node\u modules\mysql2\promise.js:223:31) 在GetData(D:\Project2\POC\mySqlQuery\u V3\u Await.js:34:44)

    0 回复  |  直到 7 年前
        1
  •  1
  •   James South    7 年前

    是的,试试。。。catch是async/await的模式

    以下是mdn,它对错误进行了一些讨论:

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

    下面是来自mongodb文档的类似代码,显示try。。。抓住:

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

        2
  •  1
  •   Dharman vijay    5 年前
    function connect() {    
      return new Promise((resolve, reject) => {
    
        let connection = mysql.createConnection({
          host: 'hostname',
          user: 'username',
          password: 'password',
          database: 'db'
        })
    
        connection.connect(err => {
          if (err) {
            reject(err)
          } else {
            resolve(true)
          }
        })  
    
      })
    }