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应用于login页面的问题及解决
Oct 17 Javascript
Jquery封装tab自动切换效果的具体实现
Jul 13 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
Oct 10 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
微信小程序解析富文本过程详解
Jul 13 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
Sep 18 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 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
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
getimagesize获取图片尺寸实例
2014/11/15 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
2014/10/30 Javascript
javascript实现数独解法
2015/03/14 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
浅谈python字符串方法的简单使用
2016/07/18 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
python如何生成网页验证码
2018/07/28 Python
python实现手机销售管理系统
2019/03/19 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
python主要用于哪些方向
2020/07/05 Python
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
七夕情人节促销方案
2014/06/07 职场文书
伦敦奥运会口号
2014/06/13 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技