当前位置: 首页 > 知识库问答 >
问题:

如何利用NodeJs MySql2库Async/Await捕获连接错误

陈俊誉
2023-03-14

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

我应该执行try/catch,还是期望返回一个err对象?如果他们在查询方法上返回一个err对象,而不是在连接方法上返回一个err对象,这是不一致的吗?

使用亚马逊AWS极光作为数据存储。

常量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)UnhandledPromiseRejectionWarning:错误:在Object.CreateConnection(D:\Project2\poc\node_module\mysql2\promise.js:223:31)在GetData(D:\Project2\poc\mysqlQuery_V3_await.js:34:44)拒绝用户'admtest1'@'10.1.2.123'(使用密码:YES)的访问

共有1个答案

宋飞掣
2023-03-14

是的...try...catch是带有Async/Await的模式

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

https://developer.mozilla.org/en-us/docs/web/javascript/reference/statements/async_function

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

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

 类似资料:
  • 问题内容: 我喜欢Typescript等中提供的新功能的平坦性。但是,我不确定我是否必须在块的外部声明要输入的变量以便以后使用,这一点我不确定。像这样: 如果我错了,请纠正我,但是似乎最好的做法是不要在主体中放置多行业务逻辑,因此,我只剩下在块外声明,在块中分配,以及然后使用它。 在这种情况下,最佳做法是什么? 问题答案: 似乎最好的做法是不要在try主体中放置多行业务逻辑 其实我会说是的。通常,

  • 我正在尝试编写一个测试,它断言用Async/Await和Axios抛出了特定类型的错误。但是,当我运行我的测试时,我得到以下结果。为什么jest不恰当地拒绝我的承诺?谢啦! 错误:expect(received).Rejects.ToThrow() 预期已收到拒绝承诺,但它解析为ValueBR>Data":“Response",”Status":404} api.js: specialerror.

  • 我试图使用express中间件处理错误,在这些行中,我有以下错误 user.js控制器 使用者js模型 app.js 错误 (节点:3304)未经处理的PromisejectionWarning:错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头。。。 (节点:3304)UnhandledPromiseRejtionWarning:未处理的promise拒绝。这个错误要么

  • Async/await 是以更舒适的方式使用 promise 的一种特殊语法,同时它也非常易于理解和使用。 Async function 让我们以 async 这个关键字开始。它可以被放置在一个函数前面,如下所示: async function f() { return 1; } 在函数前面的 “async” 这个单词表达了一个简单的事情:即这个函数总是返回一个 promise。其他值将自动被

  • 在第一章节,我们简要介绍了async/.await,并用它来构建一个简单的服务器。本章将更为详细讨论async/.await的它如何工作以及如何async代码与传统的 Rust 程序不同。 async/.await是 Rust 语法的特殊部分,它使得可以 yield 对当前线程的控制而不是阻塞,从而允许在等待操作完成时,其他代码可以运行。 async有两种主要的使用方式:async fn和asyn

  • 用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异步操作。 为了简化并更好地标识异步IO,从Python 3.5开始引入了新的语法async和await,可以让coroutine的代码更简洁易读。 请注意,async和await是针对coroutin