eggjs连接mysql_eggjs快速入门+数据库连接

本文介绍了Egg.js框架的基础知识,包括Koa中间件的洋葱模型,Egg.js的轻量化特性,以及如何在Egg.js中扩展对象和配置插件。此外,还详细讲解了如何使用egg-sequelize连接MySQL数据库,创建模型,并在控制器中调用,最终实现数据的展示。
摘要由CSDN通过智能技术生成

Koa

Koa是一个新的web框架,由Express幕后的原班人马打造,致力于成为web应用和API开发领域中的一个更小、更富有表现力、更健壮的基石。

Koa相对于Express有几个显著的特点。

Koa中间件选择了洋葱模型。

Koa除了Express的Request和Response两个对象外,增加了Context对象。

将捕获异常中间件放在其他中间件之间,就可以捕获到它们的异常了。

中间件洋葱模型

c765083c43c566353933eebfa7851121.png

中间件执行顺序:

e88f05d3562dc1d53088778c0e43f2c8.gif

每个中间件就像是洋葱的一层,所有的请求经过一个中间件都会执行两次,这样可以非常方便的后置处理逻辑。

Egg.js

Egg.js为企业级框架和应用而生,我们希望由Egg孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。

Egg不直接提供功能,只是集成各种功能插件。简单来说,就一个词,那就是轻量化。

Egg是基于Koa开发的,选择其作为基础框架,在它的模型基础上,进行了一些增强。

扩展

在基于Egg的框架或者应用中,我们可以定义app/extend/{application, context, request, response}.js来扩展Koa中对应的四个对象的原型,这样我们就可以快速的增加更多的辅助方法。

插件

一个插件可以包含extend,middleware,config。extend扩展基础对象的上下文,提供各种工具类、属性。mdidleware增加一个或多个中间件,提供请求的前置、后置处理逻辑。config配置各个环境下插件自身的默认配置项。

第一个项目

使用脚手架可以快速生成项目。

npm init egg --type=simple

egg项目文件结构规范。

egg-project

├── package.json

├── app.js (可选)

├── agent.js (可选)

├── app

| ├── router.js

│ ├── controller

│ | └── home.js

│ ├── service (可选)

│ | └── user.js

│ ├── middleware (可选)

│ | └── response_time.js

│ ├── schedule (可选)

│ | └── my_task.js

│ ├── public (可选)

│ | └── reset.css

│ ├── view (可选)

│ | └── home.tpl

│ └── extend (可选)

│ ├── helper.js (可选)

│ ├── request.js (可选)

│ ├── response.js (可选)

│ ├── context.js (可选)

│ ├── application.js (可选)

│ └── agent.js (可选)

├── config

| ├── plugin.js

| ├── config.default.js

│ ├── config.prod.js

| ├── config.test.js (可选)

| ├── config.local.js (可选)

| └── config.unittest.js (可选)

└── test

├── middleware

| └── response_time.test.js

└── controller

└── home.test.js

app/router.js,用于配置URL路由规则。

app/controller/**,用于解析用户的输入,处理后返回相应的结果。

app/service/**,用于编写业务逻辑层,可选。

app/middleware/**,用于编写中间件。

app/public/**,用于放置静态资源。

app/extend/**,用于扩展框架。

config/config.{env}.js,用于编写配置文件。

config/plugin.js用于配置需要加载的插件。

test/**,用于单元测试。

app.js和agent.js,用于自定义启动时的初始化工作,可选。#

初始化项目后,直接使用npm run dev启动项目,在localhost:7001就可以看到。

cf907fa38b35b9d6714c54b812eee0dd.png

连接数据库

使用sequelize连接数据库,首先安装egg-sequelize和mysql2。

npm install --save egg-sequelize mysql2

在config/plugin.js中启用eggsequelize插件。

// config/plugin.js

exports.sequelize = {

enable: true,

package: 'egg-sequelize',

};

在config/config.default.js中添加sequelize配置。

// config/config.default.js

config.sequelize = {

dialect: 'mysql',

host: '127.0.0.1',

port: 3306,

database: 'egg-sequelize-doc-default',

username: 'root',

password: 'w123456',

}

在数据库中创建表并插入数据。

4eb1a581b0791125c6e3fc65ca493c60.png

在app/model/user.js中编写代码实现业务逻辑。

// app/model/user.js

'use strict';

module.exports = app => {

const {

STRING,

INTEGER,

} = app.Sequelize;

const User = app.model.define('user', {

id: {

type: INTEGER,

primaryKey: true,

autoIncrement: true,

},

name: STRING(50),

sex: STRING(4),

pass: STRING(32),

}, {

freezeTableName: true,

timestamps: false,

});

return User;

};

这个Model就可以在Controller和Service中通过app.model.User访问,编写Controller调用这个Model。

// app/controller/user.js

'use strict';

const Controller = require('egg').Controller;

class UserController extends Controller {

async index() {

const _ctx = this.ctx;

const user = await _ctx.model.User.findAll();

_ctx.body = user;

}

}

module.exports = UserController;

将controller挂载到路由上。

// app/router.js

module.exports = app => {

const { router, controller } = app;

router.resources('users', '/users', controller.users);

};

使用npm run dev命令启动项目。在localhost:7001/user看到数据库中的数据。

8b221482df4161c7f37b6f4a3537718e.png

访问成功!

7279e1541d5f7703a3103bd679fcad8f.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值