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 动态访问JSon元素示例代码
Aug 30 Javascript
javascript替换已有元素replaceChild()使用介绍
Apr 03 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
详解vue添加删除元素的方法
Jun 30 Javascript
jQuery实现图片简单轮播功能示例
Aug 13 jQuery
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
用js实现放大镜效果
Oct 28 Javascript
微信小程序视频弹幕发送功能的实现
Dec 28 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正则表达式之定界符和原子介绍
2012/10/05 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
关于Python解包知识点总结
2020/05/05 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
仓库管理计划书
2014/05/04 职场文书
销售员岗位职责
2014/06/09 职场文书
建筑施工安全责任书
2014/07/24 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android