Koa2连接数据库时找不到query方法?

发布于 2022-09-13 00:12:00 字数 1592 浏览 31 评论 0

问题描述

使用Koa2连接数据库时,使用Promise和async-await封装了query方法,但是发现找不到query方法了。

相关代码

//query.js
const mysql = require("mysql");
const MYSQL_CONFIG = require("./mysql_config");

const pool = mysql.createPool(MYSQL_CONFIG);

const query = (sql, val) => {
  return new Promise((resolve, reject) => {
    pool.getConnection(function (err, connection) {
      if (err) reject(err);
      else {
        connection.query(sql, val, (err, fields) => {
          if (err) reject(err);
          else resolve(fields);
          connection.release();
        });
      }
    });
  });
};

module.exports = { query };
//app.js
const Koa = require("koa");
const router = require("koa-router")();
const query = require("./mysql/query"); //引入封装好的异步查询方法
const { QUERY_DATAS } = require("./mysql/sql"); //按需引入封装好的sql语句

const app = new Koa();
let res = query(QUERY_DATAS("admin"));
console.log(res);

module.exports = router;

报错

image.png

尝试debug

诡异的事情发生了
console.log(query)--
image.png
再试试
console.log(query.__proto__)--
image.png

问题

为什么会找不到query方法?

解决方法

在app.js中写一个async函数,在其中使用await接收返回的 promise 对象

const app = new Koa();
let dealRes = async () => {
  let res = await query(QUERY_DATAS("admin"));
  return res;
};

dealRes().then((res) => {
  console.log(JSON.stringify(res[2].trueName));
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

潜移默化 2022-09-20 00:12:00
const { query }= require("./mysql/query"); //引入封装好的异步查询方法

或者上面不改,
改这里

let res = query.query(QUERY_DATAS("admin"));

或者不改上面的两个,而是改这里

module.exports = query

以上三个地方选一个地方改应该就OK了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文