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中:表达式和语句的区别[译]
Sep 17 Javascript
基于jquery实现点击左右按钮图片横向滚动
Apr 11 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
Aug 12 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
jQuery中filter()方法用法实例
Jan 06 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
基于angular2 的 http服务封装的实例代码
Jun 29 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
JS库之wow.js使用方法
Sep 14 Javascript
解决vue 项目引入字体图标报错、不显示等问题
Sep 01 Javascript
js实现点击烟花特效
Oct 14 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
深入php内核之php in array
2015/11/10 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
py中的目录与文件判别代码
2008/07/16 Python
基于Django用户认证系统详解
2018/02/21 Python
python迭代dict的key和value的方法
2018/07/06 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
阳光体育活动方案
2014/02/16 职场文书
党员教师工作决心书
2014/03/13 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers