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 相关文章推荐
javascript prototype原型操作笔记
Dec 07 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
Aug 30 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
$.extend 的一个小问题
Jun 18 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
纯js实现倒计时功能
Jan 06 Javascript
vue.js开发环境搭建教程
May 04 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
基于Vuejs的搜索匹配功能实现方法
Mar 03 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 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
电脑硬件及电脑配置知识大全
2020/03/17 数码科技
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
九步学会Python装饰器
2015/05/09 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
css3.0新属性效果在ie下的解决方案
2010/05/10 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
经典的班主任推荐信
2013/10/28 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
成绩单公证书
2014/04/10 职场文书
活动总结模板
2014/05/09 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
防汛工作情况汇报
2014/10/28 职场文书
优秀班组申报材料
2014/12/25 职场文书
实习单位指导教师评语
2014/12/30 职场文书
2015年城市管理工作总结
2015/05/23 职场文书