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编程起步(第四课)
Feb 27 Javascript
用JQuery 实现的自定义对话框
Mar 24 Javascript
js中call与apply的用法小结
Dec 28 Javascript
可编辑下拉框的2种实现方式
Jun 13 Javascript
让人蛋疼的JavaScript语法特性
Sep 30 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
Oct 27 Javascript
angular ng-repeat数组中的数组实例
Feb 18 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 jQuery
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登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php检测useragent版本示例
2014/03/24 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
php自定义分页类完整实例
2015/12/25 PHP
php字符集转换
2017/01/23 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
13个PHP函数超实用
2015/10/21 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
jQuery 实现ajax传入参数含有特殊字符的方法总结
2016/10/17 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JS实现线性表的链式表示方法示例【经典数据结构】
2017/04/11 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
[06:45]DOTA2-DPC中国联赛 正赛 Magma vs LBZS 选手采访
2021/03/11 DOTA
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
浅析python的Lambda表达式
2019/02/27 Python
python障碍式期权定价公式
2019/07/19 Python
用python解压分析jar包实例
2020/01/16 Python
Python多分支if语句的使用
2020/09/03 Python
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
电气专业应届生求职信
2013/11/01 职场文书
监理员的岗位职责
2013/11/13 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
永不妥协观后感
2015/06/10 职场文书