egg-mysql用法详解
1. 整体流程
下面是使用egg-mysql的整体流程:
步骤 | 描述 |
---|---|
1 | 安装egg-mysql插件 |
2 | 在config/config.default.js中配置mysql插件 |
3 | 创建Model文件 |
4 | 编写业务逻辑代码 |
2. 安装egg-mysql插件
在开始之前,我们需要先安装egg-mysql插件。打开终端,进入你的项目根目录,执行下面的命令:
npm install egg-mysql --save
安装完成后,我们可以在package.json文件的dependencies中看到egg-mysql插件已被添加。
3. 配置mysql插件
在配置文件config/config.default.js中,我们需要进行mysql插件的配置。找到该文件,添加如下代码:
exports.mysql = {
// 单数据库信息配置
client: {
// host
host: 'localhost',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: '123456',
// 数据库名
database: 'test',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
在上述代码中,我们配置了mysql连接的相关信息,包括主机名、端口号、用户名、密码和数据库名。根据实际情况,你需要修改这些参数。
4. 创建Model文件
在egg.js中,我们可以通过Model来操作数据库。Model负责与数据库进行交互,包括数据的查询、插入、更新和删除等操作。下面我们来创建一个Model文件。
在app/model目录下,创建一个名为user.js的文件。在该文件中,我们可以定义与user表相关的数据操作方法。
module.exports = app => {
const { STRING, INTEGER, DATE } = app.Sequelize;
const User = app.model.define('user', {
id: { type: INTEGER, primaryKey: true, autoIncrement: true },
name: STRING(30),
age: INTEGER,
created_at: DATE,
updated_at: DATE,
});
return User;
};
上述代码中,我们使用app.model.define
来定义一个与user表对应的Model。在Model中,我们可以设置表的字段以及字段的类型。此外,我们还需要设置主键、自增属性和时间字段。
5. 编写业务逻辑代码
在上一步中,我们创建了Model文件。接下来,我们可以在controller中编写业务逻辑代码,使用Model对数据库进行操作。
在app/controller目录中,创建一个名为user.js的文件。在该文件中,我们可以定义与用户相关的接口。
class UserController extends app.Controller {
async index() {
const { ctx } = this;
const users = await ctx.model.User.findAll();
ctx.body = users;
}
async create() {
const { ctx } = this;
const { name, age } = ctx.request.body;
const user = await ctx.model.User.create({ name, age });
ctx.body = user;
}
async show() {
const { ctx } = this;
const { id } = ctx.params;
const user = await ctx.model.User.findByPk(id);
ctx.body = user;
}
async update() {
const { ctx } = this;
const { id } = ctx.params;
const { name, age } = ctx.request.body;
const user = await ctx.model.User.findByPk(id);
await user.update({ name, age });
ctx.body = user;
}
async destroy() {
const { ctx } = this;
const { id } = ctx.params;
const user = await ctx.model.User.findByPk(id);
await user.destroy();
ctx.status = 204;
}
}
上述代码中,我们定义了一系列与用户相关的接口,包括获取用户列表、创建用户、获取单个用户、更新用户信息和删除用户等功能。在每个接口实现中,我们通过ctx.model.User
来与数据库进行交互。
6. 总结
到此为止,我们已经完成了egg-mysql的用法示例。首先,我们安装了egg-mysql插件,并在配置文件中进行了相关配置。然后,我们创建了一个与user表对应的Model,并在controller中编写了业务逻辑