返回
egg.js是如何访问MySQL数据库
前端
2023-10-18 16:58:59
通过 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 的所有高级功能,您可以直接使用它们,例如:
- 查询构建器
- 数据验证
- 钩子