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之卸载鼠标事件的代码
May 14 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
Nov 25 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
jquery.cookie用法详细解析
Dec 18 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
Nov 06 Javascript
JS实现简易换图时钟功能分析
Jan 04 Javascript
Vue2 模板template的四种写法总结
Feb 23 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
javascript使用prototype完成单继承
2014/12/24 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
Python入门篇之正则表达式
2014/10/20 Python
python单元测试unittest实例详解
2015/05/11 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python实现反转部分单向链表
2018/09/27 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
入党积极分子介绍信
2014/01/17 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
公司庆典欢迎词
2015/01/26 职场文书
好好学习保证书
2015/02/26 职场文书
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python