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之Document元素选择器篇
Aug 14 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
基于jQuery实现简单的折叠菜单效果
Nov 23 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
对angularjs框架下controller间的传值方法详解
Oct 08 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
javascript实现画板功能
Apr 12 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连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
浅析php单例模式
2014/11/25 PHP
php动态函数调用方法
2015/05/21 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
Javascript Global对象
2009/08/13 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python网站验证码识别
2016/01/25 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
python cs架构实现简单文件传输
2020/03/20 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
八一建军节部队活动方案
2014/02/04 职场文书
还款承诺书范文
2014/05/20 职场文书
幼师辞职信范文
2015/02/27 职场文书
消防验收申请报告
2015/05/15 职场文书
获奖感言范文
2015/07/31 职场文书