我的代码中的异步/等待有什么问题吗

时间:2018-10-19 11:52:53

标签: node.js express asynchronous promise mysql2

带有mysql2的Express API 我想使用异步并等待从产品表中查询数据,但是什么都没打印出来,不知道如何正确使用它。

exports.getAllTours = function(req, res) {
  getTours()
  .then(data => console.log(data))
  .catch(err => console.log(err ));
}

async function getTours() {
    var sql = "Select * from product_prd"
    return new Promise(async function(resolve, reject) {
        let [rows, fields] = await poolQuery(sql)
        setTimeout(function() {
            resolve(rows);
        }, 500);
    })
    .catch(err => reject(err));
}

async function poolQuery(sql, args) {
    return new Promise((resolve, reject) => {
        promisePool.query(sql, args, (err, rows) => {
            if (err)
                return reject(err);
            resolve(rows);
        }).catch(err => reject(err));
    });
}

我按照mysql2的官方文档创建了这样的连接池

const mysql = require('mysql2');

const pool = mysql.createPool({
    host: 'localhost',
    user: 'super',
    port: '3307',
    password: 'sohail',
    database: '784413_wonder',
    waitForConnections: true,
    connectionLimit: 10,
    queueLimit: 0

});
// now get a Promise wrapped instance of that pool
const promisePool = pool.promise();

module.exports = promisePool;

1 个答案:

答案 0 :(得分:2)

我很确定有一个SQL错误,您无法弄清楚,因为true中的错误处理是错误的。

尝试一下:

getTours