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+iframe 实现无刷新载入整页的代码
Mar 17 Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
使用js画图之饼图
Jan 12 Javascript
超赞的动手创建JavaScript框架的详细教程
Jun 30 Javascript
理解javascript中Map代替循环
Feb 26 Javascript
浅析JS原型继承与类的继承
Apr 07 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
详解Vue2.0之去掉组件click事件的native修饰
Apr 20 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php获取汉字首字母的函数
2013/11/07 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
简单瞅瞅Python vars()内置函数的实现
2019/09/27 Python
Python shutil模块用法实例分析
2019/10/02 Python
python实现横向拼接图片
2020/03/23 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
银行毕业实习自我鉴定
2013/09/19 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书