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实现禁止后退的方法
Dec 27 Javascript
取键盘键位ASCII码的网页
Jul 30 Javascript
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
Mar 19 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
谈谈JavaScript中的函数
Sep 08 Javascript
AJAX检测用户名是否存在的方法
Mar 24 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输入流php://input介绍
2012/09/18 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
NodeJs测试框架Mocha的安装与使用
2017/03/28 NodeJs
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python函数的5种参数详解
2017/02/24 Python
Python正则捕获操作示例
2017/08/19 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
如何进行Linux分区优化
2016/09/13 面试题
幼儿园园长自我鉴定
2013/10/22 职场文书
教学评估实施方案
2014/03/16 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
党风廉政建设调研报告
2015/01/01 职场文书
党员身份证明材料
2015/06/19 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js