首页 > 解决方案 > 在 NodeJS 的 MySQL 查询中使用 Promises 的问题

问题描述

我在 NodeJS 的 express 服务器中有这行代码:

sql = "SELECT mName FROM tokenMerchant " +
        "WHERE mUUID = ?";
        console.log("Merchant ID: ",tr.merchantId);
        pool.getConnection(function(err, conn){
            if (err) throw err;

            function getMerchantName(query){

                return new Promise(function (resolve, reject){
                    pool.query(query, [tr.merchantId], function(err, result){

                        if(err) return reject(err);

                        resolve(result);

                    });
                });

            };

            getMerchantName(sql).then(
                result => {
                    tr.secondaryName = result[0].mName;
                    console.log("Secondary Name: ",tr.secondaryName);
                    conn.release;
                    getUrl();
                }
            ).catch(
                error => {
                    console.log('Rejected');
                }
            );

        }); 

        function getRUrl(){//some codes here after promise resolved
}

这是控制台中的输出: 在此处输入图像描述

我的问题是:

  1. 它不会触发getUrl()
  2. 它将登录控制台“辅助名称”,然后它还将记录“被拒绝”,这很奇怪,因为它是resolved并且rejected

请告诉我上面的代码有什么问题。谢谢。

标签: javascriptmysqlnode.jspromise

解决方案


推荐阅读