pool.query 不适用于 async/await

pool.query is not working with async/await

我是 nodejs 的新手,尝试使用 this 库从 mysql 读取数据。我正在使用快速框架。

这是我的 router/index.js 文件中的代码

router.get('/', async function(req, res, next) {
  console.log(query);
  let data = await query();
  console.log(data);
  res.send();
});

从数据库读取数据的代码(连接到数据库没有问题)。

const query = async (table, fields ) => {
    try {
        const results = await pool.query('SELECT * FROM country limit 1');
        return results
    } catch(err) {
        return err;
    }
}

以下内容由 console.log(data)

记录
<ref *1> Query {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  _callback: undefined,
  _callSite: Error
      at Pool.query (/Users/siva/Projects/api/node_modules/mysql/lib/Pool.js:199:23)
      at query (/Users/siva/Projects/api/db/index.js:4:36)
      at /Users/siva/Projects/api/routes/index.js:7:20
      at Layer.handle [as handle_request] (/Users/siva/Projects/api/node_modules/express/lib/router/layer.js:95:5)
      at next (/Users/siva/Projects/api/node_modules/express/lib/router/route.js:137:13)
      at Route.dispatch (/Users/siva/Projects/api/node_modules/express/lib/router/route.js:112:3)
      at Layer.handle [as handle_request] (/Users/siva/Projects/api/node_modules/express/lib/router/layer.js:95:5)
      at /Users/siva/Projects/api/node_modules/express/lib/router/index.js:281:22
      at Function.process_params (/Users/siva/Projects/api/node_modules/express/lib/router/index.js:335:12)
      at next (/Users/siva/Projects/api/node_modules/express/lib/router/index.js:275:10),
  _ended: false,
  _timeout: undefined,
  _timer: Timer { _object: [Circular *1], _timeout: null },
  sql: 'SELECT * FROM country limit 1',
  values: undefined,
  typeCast: true,
  nestTables: false,
  _resultSet: null,
  _results: [],
  _fields: [],
  _index: 0,
  _loadError: null,
  [Symbol(kCapture)]: false
}

有人可以帮我解决这个问题吗?

NPM 上的 mysql 库不支持承诺,因此不能与 await 一起使用。您将需要实现对 mysql 的承诺支持的多个包装器之一或制作您自己的包装器。 NPM 上的一个流行模块是一个名为 mysql2 的分支(他们现在正在与 mysqljs 组织协调以与 mysql 项目共享公共代码)。使用 mysql2 你可以:

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

然后,您可以使用 async/await 进行 mysql 调用。