返回

egg.js是如何访问MySQL数据库

前端

通过 Egg.js 轻松访问 MySQL 数据库

一、配置 MySQL

1. 安装 MySQL 驱动

npm install mysql --save

2. 配置 MySQL

config/plugin.js 中添加以下代码:

exports.mysql = {
  enable: true,
  package: 'egg-mysql',
};

3. 配置 MySQL 连接

config/config.default.js 中添加以下代码:

exports.mysql = {
  client: {
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password: 'password',
    database: 'egg',
  },
  app: true,
};

二、定义数据模型

app/model 目录下创建一个模型文件,如 user.js,内容如下:

module.exports = app => {
  const { STRING, INTEGER, DATE } = app.Sequelize;

  const User = app.model.define('user', {
    id: { type: INTEGER, primaryKey: true, autoIncrement: true },
    name: { type: STRING(30), allowNull: false },
    age: { type: INTEGER, allowNull: false },
    created_at: { type: DATE, allowNull: true },
    updated_at: { type: DATE, allowNull: true },
  });

  return User;
};

三、查询数据

在 Controller 中,可以使用 this.service.user 访问 User 模型,并进行查询操作。

class UserController extends app.Controller {
  async find() {
    const users = await this.service.user.findAll();
    this.ctx.body = users;
  }

  async create() {
    const user = await this.service.user.create({
      name: 'John',
      age: 20,
    });
    this.ctx.body = user;
  }

  async update() {
    const user = await this.service.user.update({
      name: 'John Doe',
      age: 21,
    }, {
      where: {
        id: 1,
      },
    });
    this.ctx.body = user;
  }

  async delete() {
    const result = await this.service.user.destroy({
      where: {
        id: 1,
      },
    });
    this.ctx.body = result;
  }
}

module.exports = UserController;

四、结语

通过遵循本指南,您可以轻松地使用 Egg.js 访问 MySQL 数据库,并进行数据操作。

常见问题解答

1. 如何在 Egg.js 中使用 MySQL的事务?

您可以通过 this.app.mysql.beginTransaction()this.app.mysql.commit() 来使用事务。

2. 如何在 Egg.js 中进行原生 SQL 查询?

您可以使用 this.app.mysql.query() 方法执行原生 SQL 查询。

3. 如何在 Egg.js 中使用模型关联?

Egg.js 支持模型关联,您可以通过 belongsTo()hasMany()hasOne() 等方法定义关联关系。

4. 如何在 Egg.js 中使用分页?

您可以通过 this.service.user.findAndCountAll({ limit: 10, offset: 0 }) 方法进行分页。

5. 如何在 Egg.js 中使用 Sequelize 的高级功能?

Egg.js 支持 Sequelize 的所有高级功能,您可以直接使用它们,例如:

  • 查询构建器
  • 数据验证
  • 钩子