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 相关文章推荐
jQuery 使用手册(六)
Sep 23 Javascript
初识JQuery 实例一(first)
Mar 16 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
jquery应该如何来设置改变按钮input的onclick事件
Dec 10 Javascript
JavaScript初学者建议:不要去管浏览器兼容
Feb 04 Javascript
js实现文字跟随鼠标移动而移动的方法
Feb 28 Javascript
JavaScript生成SQL查询表单的方法
Aug 13 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
clipboard.js在移动端复制失败的解决方法
Jun 13 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
vue 使用async写数字动态加载效果案例
Jul 18 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下统计用户在线时间的一种尝试
2010/08/26 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
php判断linux下程序问题实例
2015/07/09 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
继承公证书
2014/04/09 职场文书
大学自主招生推荐信
2014/05/10 职场文书
新闻通讯稿模板
2015/07/22 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python