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 相关文章推荐
JS 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
javascript 定义初始化数组函数
Sep 07 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 Javascript
JS Replace()的高级使用方法介绍
Jun 29 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
Jun 27 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
Nov 01 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
如何使用VuePress搭建一个类型element ui文档
Feb 14 Javascript
Vue使用NProgress进度条的方法
Sep 21 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
PHP如何使用JWT做Api接口身份认证的实现
2020/02/03 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
Django中更改默认数据库为mysql的方法示例
2018/12/05 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
Pyqt5自适应布局实例
2019/12/13 Python
pytorch实现CNN卷积神经网络
2020/02/19 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
家电业务员岗位职责
2014/03/10 职场文书
党课心得体会范文
2014/09/09 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python
红灯733-1型14管5波段半导体收音机
2021/04/22 无线电
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
css3带你实现3D转换效果
2022/02/24 HTML / CSS