在处理数据库查询时如何在 Node.js 中正确链接 Promise?

Mary-Kate Olsen
发布: 2024-11-14 09:30:02
原创
272 人浏览过

How Can I Chain Promises Correctly in Node.js When Working with Database Queries?

Promise 和连接问题

在此 Node.js 代码中,promise 预计会等待 findUser 函数完成,这事实并非如此。该问题源于数据库查询的异步执行。

连接回调函数

在 findUser 中,使用 pool.getConnection 建立与数据库的连接。该函数采用回调函数作为参数,当连接准备就绪时调用该函数。但是,代码在此回调中错误地返回数据,导致在查询完成之前返回 undefined。

要解决此问题,findUser 函数应将回调传递给 pool.getConnection 来解析或拒绝承诺,指示查询是否成功。

Chaining Promises

使用Promise 允许顺序执行代码。在提供的代码中,第一个 Promise 应该使用 then 而不是回调函数链接到下一个 Promise,如下所示:

promise.then(function(rows) {
    return new Promise(function (resolve, reject) {
        loginC.doSomething(data);

        if (success) {
            resolve(data);
        } else {
            reject(reason);
        }
    });
}, function(reason) {
    console.log("error handler second");
});
登录后复制

错误处理

The之所以输出“error handler secondary”消息,是因为数据库连接失败时发生错误。 connection.on('error') 事件侦听器中的错误处理未正确使用。此错误传播到 findUser 函数,并被链中的第二个错误处理程序捕获。

findUser 函数应该拒绝带有错误消息的 Promise,然后该错误消息将传播到 Promise 链中的错误处理程序.

以上是在处理数据库查询时如何在 Node.js 中正确链接 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板