egg.js的基本使用和调用数据库的方法示例


Posted in Javascript onMay 18, 2019

首先,整个项目的创建命令:

npm i egg-init -g //安装egg
egg-init egg-example --type=simple //初始化一个egg模板例子 后面的type跟的是模板类型这里是简单的
cd egg-example//进入例子
npm i //安装依赖

可以去官方教程查看基本配置的讲解。

直接说使用,简单看过Egg的文档,官方文档对于入门还是很实用的,再配合一些别人的攻略很容易入门上手就可以使用。

首先router.js:

'use strict';

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
 const { router, controller } = app;
 router.get('/', controller.home.index);
 router.get('/custom',controller.customController.custonIndex); //自定义controller的路由
};

router.js中定义了我们的路由规则,所有的请求都会通过这个路由规则去找对应的Controller,这样也可以做到统一管控(如同前端初始化所有组件吧)。

接下来就是Controller控制层:

'use strict';

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

class CustomController extends Controller {
  async custonIndex() { //注意这里要定义成异步方法防止请求被阻塞
    //let {id} = this.ctx.params; // 获取路由参数
    //let {name} = this.ctx.query; // 获取用户入参
    let options = {id:'5', name:2}
    
    let info = await this.ctx.service.customService.getInfo(options);//调用Service层传参
    处理,返回结果赋值
    
    this.ctx.body = {
      code: 200,
      data: info
    };//返回体
    this.ctx.status = 200;
  }
}

module.exports = CustomController;

发送请求会调用Controller中的方法,Controller中主要工作是接受用户的参数并进行处理,然后将处理好的参数发送给Service层,然后把Service的结果返回给用户。

其中对参数的处理包括但不仅限于参数校验和参数拼装,当然也可以直接返回不走Service,都在Controller层做处理,但是不建议这样做。

服务层(Service):

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

class CustimService extends Service {
  async getInfo(options) {
    const results = await this.app.mysql.select('test',{id:5});
    return results[0].name;
  }
}

module.exports = CustimService;

Service层拿到Controller层的数据之后,根据条件执行对数据库或者其他操作,最终将结果返回,一个请求的简单流程就算是完成了

配置MySQL在egg-project\config\config.default.js里面,直接放上我的配置,具体起她的数据库配置方法可以自查。

'use strict';

module.exports = appInfo => {
 const config = exports = {
   mysql:{
     // 单数据库信息配置
     client: {
       // host
       host: '44.44.44.44',
       // 端口号
       port: '3306',
       // 用户名
       user: 'mysq',
       // 密码
       password: '359359',
       // 数据库名
       database: 'mysql_db',
     },
     // 是否加载到 app 上,默认开启
     app: true,
     // 是否加载到 agent 上,默认关闭
     agent: false,
   }
 };

 // use for cookie sign key, should change to your own and keep security
 config.keys = appInfo.name + '_17792_5967';

 // add your config here
 config.middleware = [];

 return config;
};

这样,你就打通了egg和数据库之间的基本操作了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery图片延迟加载 前端开发技能必备系列
Jun 18 Javascript
javascript控制swfObject应用介绍
Nov 29 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
jquery.idTabs 选项卡使用示例代码
Sep 03 Javascript
node.js中的fs.truncateSync方法使用说明
Dec 15 Javascript
javascript变量声明实例分析
Apr 25 Javascript
详解JavaScript语言的基本语法要求
Nov 20 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
通过函数作用域和块级作用域看javascript的作用域链
Aug 05 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
Node.js 多进程处理CPU密集任务的实现
May 26 Javascript
详解React的回调渲染模式
Sep 10 Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 #Javascript
webpack 代码分离优化快速指北
May 18 #Javascript
如何实现小程序tab栏下划线动画效果
May 18 #Javascript
微信小程序结合Storage实现搜索历史效果
May 18 #Javascript
Fetch超时设置与终止请求详解
May 18 #Javascript
微信小程序实现搜索历史功能
Mar 26 #Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 #Javascript
You might like
php 魔术方法使用说明
2009/10/20 PHP
PHP中的string类型使用说明
2010/07/27 PHP
header跳转和include包含问题详解
2012/09/08 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
详解Vue CLI 3.0脚手架如何mock数据
2018/11/23 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python3编写C/S网络程序实例教程
2014/08/25 Python
Python操作MySQL简单实现方法
2015/01/26 Python
python读写csv文件方法详细总结
2019/07/05 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
Python调用Windows命令打印文件
2020/02/07 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python time()的实例用法
2020/11/03 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
用python发送微信消息
2020/12/21 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
普天C++笔试题
2016/03/20 面试题
服装设计行业个人的自我评价
2013/12/20 职场文书
党员一句话承诺大全
2014/03/28 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers