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 窗口加载蒙板 内嵌网页内容
Nov 19 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
百度地图自定义控件分享
Mar 04 Javascript
简化版手机端照片预览组件
Apr 13 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
初学者AngularJS的环境搭建过程
Oct 27 Javascript
iview同时验证多个表单问题总结
Sep 29 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
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
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
js类的静态属性和实例属性的理解
2009/10/01 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
js闭包的用途详解
2014/11/09 Javascript
实例分析javascript中的call()和apply()方法
2014/11/28 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JS是按值传递还是按引用传递
2015/01/30 Javascript
js点击选择文本的方法
2015/02/09 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
原生js实现轮播图
2017/02/27 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
python中尾递归用法实例详解
2015/04/28 Python
详解Django通用视图中的函数包装
2015/07/21 Python
python实现画圆功能
2018/01/25 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
运动会入场解说词300字
2014/01/25 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
低碳环保口号
2014/06/12 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
文艺委员竞选稿
2015/11/19 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书