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 相关文章推荐
Document 对象的常用方法
Jul 31 Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
jQuery each()小议
Mar 18 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
jquery自定义表单验证插件
Oct 12 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
解决vue props 拿不到值的问题
Sep 11 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
vue项目中使用bpmn为节点添加颜色的方法
Apr 30 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
JavaScript实现页面高亮操作提示和蒙板
Jan 04 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
php正则表达式学习笔记
2015/11/13 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Python实现二维有序数组查找的方法
2016/04/27 Python
Python守护线程用法实例
2017/06/23 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
python3实现高效的端口扫描
2019/08/31 Python
Python流程控制 if else实现解析
2019/09/02 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Django如何使用jwt获取用户信息
2020/04/21 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
英国女士和男士时尚服装网上购物:Top Labels Online
2018/03/25 全球购物
新闻编辑专业自荐信
2014/07/02 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
浅谈Python中对象是如何被调用的
2022/04/06 Python