1、egg项目的创建

创建项目 npm init egg --type=simple

安装依赖 npm i

依赖安装完成后运行命令 npm run dev 即可运行项目

参考官方文档 https://eggjs.org/zh-cn/intro/quickstart.html

2、egg目录介绍

egg-project

├── package.json

├── app.js (可选)

├── agent.js (可选)

├── app

| ├── router.js

│ ├── controller // C 控制器,逻辑都在这边实现

│ | └── home.js

│ ├── service (可选) // M 数据库获取数据在这边实现

│ | └── user.js

│ ├── middleware (可选)

│ | └── response_time.js

│ ├── model (可选) // 数据库模型放着

│ ├── schedule (可选)

│ | └── my_task.js

│ ├── public (可选)

│ | └── reset.css

│ ├── view (可选) // V 页面渲染

│ | └── 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 路由规则,具体参见 Router。

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

app/service/** 用于编写业务逻辑层,可选,建议使用,具体参见 Service。

app/middleware/** 用于编写中间件,可选,具体参见 Middleware。

app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。

app/extend/** 用于框架的扩展,可选,具体参见框架扩展。

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

config/plugin.js 用于配置需要加载的插件,具体参见插件。

test/** 用于单元测试,具体参见单元测试。

app.js 和 agent.js 用于自定义启动时的初始化工作,可选,具体参见启动自定义。关于agent.js的作用参见Agent机制。

由内置插件约定的目录:

app/public/** 用于放置静态资源,可选,具体参见内置插件 egg-static。

app/schedule/** 用于定时任务,可选,具体参见定时任务。

3、简单的使用

Service 写法

// app/service/user.js

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

class UserService extends Service {

async find(uid) {

// 下面这句就是数据库获取数据

const user = await this.ctx.db.query('select * from user where uid = ?', uid);

return user;

}

}

module.exports = UserService;

Controller 写法

// app/controller/user.js

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

class UserController extends Controller {

async getUserList() {

const { ctx, service } = this;

// 调用 Service 进行业务处理

const res = await service.user.find(ctx.query.uid);

// 设置响应内容和响应状态码

ctx.body = { res };

ctx.status = 201;

}

async delUser() {

// ...............

}

}

module.exports = UserController;

Router 写法

// app/router.js

module.exports = app => {

const { router, controller } = app;

router.get('/user', controller.user.getUserList);

router.post('/user/del', controller.user.delUser);

};

4、sequelize,mysql的使用

安装 npm install --save egg-sequelize mysql2

然后启用插件( 在 config/plugin.js 中引入 egg-sequelize 插件)

// config/plugin.js

exports.sequelize = {

enable: true,

package: 'egg-sequelize',

};

接着配置数据库信息(在 config/config.default.js 中添加 sequelize 配置)

'use strict';

/**

* @param {Egg.EggAppInfo} appInfo app info

*/

module.exports = appInfo => {

/**

* built-in config

* @type {Egg.EggAppConfig}

**/

const config = exports = {};

// use for cookie sign key, should change to your own and keep security

config.keys = appInfo.name + '_1595165791967_5765';

// add your middleware config here

config.middleware = [];

config.sequelize = {

dialect: 'mysql',

host: 'localhost',

port: 3306,

database: 'shop',

username: 'root',

password: '123456',

};

// add your user config here

const userConfig = {

// myAppName: 'egg',

};

return {

...config,

...userConfig,

};

};

然后配置数据库模型,在 /app的目录下 建立 model文件夹,然后在 model文件夹建立一个 model文件( 如 /app/model/user.js )

'use strict';

module.exports = app => {

const { STRING, INTEGER, TINYINT } = app.Sequelize;

const User = app.model.define('users',

{

id: {

type: INTEGER(10), // 数据类型

allowNull: false, // 是否为 null

primaryKey: true, // 是否为 主键

autoIncrement: true, // 是否 自动填值

},

username: {

type: STRING(100),

allowNull: false,

defaultValue: '', // 默认值

},

age: {

type: TINYINT,

allowNull: false,

defaultValue: 0, // 默认值

},

password: {

type: STRING(100),

allowNull: false,

defaultValue: '',

},

},

{

freezeTableName: true, // Model 对应的表名将与model名相同

timestamps: false,

}

);

return User;

};

最后就是使用(比如在service/user.js)

'use strict';

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

class userService extends Service {

async getUserAllList() {

const { ctx } = this;

// 注意 ctx.model.User 中的 User 是 model 下 user.js 的文件的首字母大写的名称

return await ctx.model.User.findAll();

}

}

module.exports = userService

表关联参考 https://blog.csdn.net/weixin_39066827/article/details/107106472

本文地址:https://blog.csdn.net/john_xiaoweige/article/details/107499974

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

egg mysql 项目实战,egg.js创建项目,目录介绍,简单使用,sequelize mysql使用相关推荐

  1. nodejs项目实战教程08——创建静态Web服务器

    nodejs项目实战教程08--创建静态Web服务器 什么是Web服务器 目标 1. 访问web服务器上面的网站 1.1 创建服务器 1.2 读取服务器上的资源文件 2. 下载web服务器上的文件 方 ...

  2. 【全开源+免费更新】doodoo.js创建项目教程

    创建项目 async/await // 下载demo git clone https://github.com/doodooke/doodoo.js.git // 安装依赖 yarn install ...

  3. 小米商城html5,小米商城html项目实战,js+css+html

    [实例简介] 小米商城html项目实战,js+css+html [实例截图] [核心代码] xiaomi-master └── xiaomi-master ├── css │   ├── index. ...

  4. 从零开始的Django框架入门到实战教程(内含实战实例) - 01 创建项目与app、加入静态文件、模板语法介绍(学习笔记)

    目录 1. 安装Django 2. 创建项目(startproject) 2.1 创建项目 2.2 介绍项目文件 2.3 APP(startapp) 3. 走通流程(urls, views, runs ...

  5. 【Python • 项目实战】pytesseract+pyqt实现图片识别软件小项目——(一)创建项目和画界面

    本文默认你已经学习了上一篇文章,如果你还没有学习,就赶快去学习吧.关注博主,学习更多内容. 文章目录 前言 一.创建项目 1. 从模板创建项目 2. 使用pycharm打开项目 3. 安装Pyqt5库 ...

  6. 菜鸟修行之路----项目实战:微人事项目之项目概述

    菜鸟修行之路----项目实战:微人事项目之项目概述 ​ 修行之路艰辛,与君共勉!! ​ 从即日起,通过对于github上非常热门的前后端分离开发的开源项目:微人事管理系统的全面学习以及自主手写代码实现 ...

  7. Python和Java结合的项目实战_[项目实战] Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 [...

    资源介绍 课程简介:xa0xa0 Python高级教程项目实战篇 Python和Java结合的项目实战 视频教程 教学视频 ----------------------课程目录 Python项目实战篇 ...

  8. HaaS EDU物联网项目实战:野外救援项目

    HaaS EDU K1是一款高颜值.高性能.高集成度的物联网开发板,板载功能强大的4核(双核300Mhz M33+双核1GHz A7)主芯片,2.4G/5G双频Wi-Fi,双模蓝牙(经典蓝牙/BLE) ...

  9. OpenCV-PyQT项目实战(5)项目案例01:图像模糊

    欢迎关注『OpenCV-PyQT项目实战 @ Youcans』系列,持续更新中 OpenCV-PyQT项目实战(1)安装与环境配置 OpenCV-PyQT项目实战(2)QtDesigner 和 PyU ...

  10. springboot初始化项目慢,springboot创建项目慢

    ================================ ©Copyright 蕃薯耀 2020-06-23 https://www.cnblogs.com/fanshuyao/ spring ...

最新文章

  1. python dict根据value找对应的key_一个不得不了解的Python库——collections
  2. String直接赋字符串和new String的区别
  3. 3月16日 winform
  4. 为何excel中数据无法计算机,excel表格内数据为何无法计算机-为什么EXCEL单元格内的数字不能运算...
  5. 的拼音怎么改正_「我就退出家长群怎么了?」:多少中年父母的崩溃,从家长群开始...
  6. 用面粉和醋洗头 让你的头发黑亮又浓密
  7. MLSQL解决了什么问题
  8. 随想录(提高代码质量的几个工具)
  9. Chrome 强制显示最小字体为 12px的解决方法
  10. Tukey‘s test方法 异常值
  11. mac安装搜狗输入法
  12. 运筹学与管理科学著名期刊解读
  13. xss.haozi.me在线靶机挑战
  14. 基本组件之botton
  15. 香农公式说明了什么_香农定理到底有什么含义?能通俗地解释一下么?
  16. Linux下二维码生成工具:QRencode
  17. Python爬虫包 BeautifulSoup 递归抓取
  18. 多线程并发篇(1024节日快乐)
  19. 实现多个文件夹名同时重命名的操作
  20. elevation 设置无效果

热门文章

  1. 在VS2003中以ClassLibrary工程的方式管理Web工程.
  2. pandas(三) -- DataFrame的基本操作
  3. 推荐一个 React 技术揭秘的项目,自顶向下的 React 源码分析
  4. golang键盘输入:从控制台获取信息
  5. sonarqube中,分析maven聚合工程时,不必分析parent工程,只需分析下面的module子工程即可
  6. Minio分布式集群示例:8个节点,每节点1块盘
  7. Docker管理面板Portainer中文汉化教程
  8. Ansible-playbook yum安装nginx1.20.1
  9. kafka批量启动脚本
  10. linux which命令的使用示例