egg --- > 配置连接mysql && 创建模型 && 插入数据

在egg中使用egg-sequelize插件

  • sequelize是与数据库操作相关的库
  • 安装: npm install --save egg-sequelize mysql2

在egg中配置sequelize

  • 1.在 config/plugin.js中引入 egg-sequelize插件,代码如下
sequelize: {
  enable: true,
  package: 'egg-sequelize'
}
  • 2.在config/config.default.js中编写sequelize配置
// const userConfig 中
sequelize:{
  dialect: 'mysql',
  host: '127.0.0.1',
  port: 3306,
  username: 'root',
  password: 'example',
  database: 'test'
}

在Model层定义user的结构

  • /app/model/user.js
module.exports = app =>{
	const { STRING } = app.Sequelize;
		
	const User = app.model.define(
		"user",
		{	name: STRING(30) },
		{	timestamps: false}
	);
	
	// 数据库同步
	User.sync({ force: true });
	
	return User
}
  • 定义数据表的结构使用app,model.define
  • 由于在最开始引入了Sequelize故,可以使用app.model.define

在服务层(Service)获取表,并插入数据

  • /app/service/user.js
const Service = require('egg').Service;

class UserService extends Service {
	async getAll(){
		const User = this.ctx.model.User;		// 获取Model层的User表
		await User.sync({ 	focrce: true	});
		await User.create({
			name: 'marron'
		});
	
		return await this.ctx.model.User.findAll();
	}
}
module.exports = UserService;

在控制层(Controller)调用服务层(Service)的功能

  • /app/controller/home.js
const Controller = require('egg').Controller;

class HomeController extends Controller {
	async index (){
		const { ctx } = this;
		ctx.body = await ctx.service.user.getAll();
	}
}
  • 注: ctx.service.user.getAll() 对应目录下 /app/service/user的getAll方法.即上面写到的async getAll()

在路由层(Router)将URL和方法对应

  • /app/router.js
module.exports = app =>{
	const { router, controller } = app;
	router.get('/', controller.home.index);
}
发布了177 篇原创文章 · 获赞 22 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/piano9425/article/details/103356124
egg
今日推荐