egg2操作mysql报this.app.mysql.query is not a function

时间:2022-07-23
本文章向大家介绍egg2操作mysql报this.app.mysql.query is not a function,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

犯错原因,文档没看好,,,https://eggjs.org/zh-cn/basics/config.html

问题

按照官网配置mysql好后,操作数据库,报错

TIM截图20180417172710.png

问题复现

config.default.js

exports.mysql = {
  client: {
    host: 'localhost',
    port: '3306',
    user: 'root',
    password: '123456',
    database:'nodemysql'
  },
  app: true,
  agent: false,
};

service/data.js

'use strict';
const Service = require('egg').Service;
class DataService extends Service {
  async getData() {
    const result = await this.app.mysql.select('pet');
    return {result};
  }
}
module.exports = DataService;

controller/mysql.js

'use strict';
const Controller = require('egg').Controller;
class MysqlController extends Controller {
  async index() {
    let {ctx,service} = this;
    let result = await ctx.service.data.getData();
    ctx.body=result;
  }
}
module.exports = MysqlController;

问题解决

注意文档

通过把配置放到

'use strict';
module.exports = appInfo => {
  const config = exports = {};
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1523879140687_7825';
  // add your config here
  config.middleware = [];
  config.mysql = {
    client: {
      host: 'localhost',
      port: '3306',
      user: 'root',
      password: 'zzzzzzz',
      database:'nodemysql'
    },
    app: true,
    agent: false,
  }
  return config;
};