egg.js与mysql的结合使用,以及部署事项
最近使用egg.js写了一个小项目练手,主要用来封装接口以及代理接口。进入正题:
egg搭建以及各项配置 可以详见官方文档:https://eggjs.org,这里简单描述一下:
1.直接使用脚手架快速搭建项目,命令如下:
(1)npm i egg-init -g;
(2)新建egg-demo文件夹,执行命令:egg-init egg-demo --type=simple;
(3)进入当前文件夹下,执行命令:npm i;
(4)启动项目:npm run dev;
在浏览器中打开:localhost:7001
注意:这里默认地址是7001,如果修改,可以在package.json里面配置:egg-scripts start --port=要修改的端口号 --daemon --title=egg-server-egg-demo.
2.实现接口:
(1)在controller文件夹下,新建自己的文件,开始业务书写,这里个人建议可以新建service文件夹,在里面书写自己的复杂业务逻辑,而controller用来接收返回给页面展示;
(2)plugin.js用来定义插件;config.default.js用做基本配置,同时自己也可以新建文件来区分开发环境、测试环境以及线上环境;
(3)代理接口,可以参考 https://blog.csdn.net/baidu_33438652/article/details/81736832;
这里简单说一下get、post两种常用的请求方法。
get:
const result = await this.ctx.curl(代理的接口地址,{dataType: 'json'});
post:
const result = await this.ctx.curl(代理的接口地址,{
// 必须指定 method,默认为get
method:'POST',
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
contentType: 'json',
data: 请求参数,
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
dataType: 'json'
});
3.mysql数据库使用:
(1)mysql安装:npm i egg-mysql --save,然后在plugin.js里面配置如下:
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
config.default.js配置如下:
config.mysql = {
client: {
// host
host: '',
// 端口号
port: '',
// 用户名
user: '',
// 密码
password: '',
// 数据库名
database: ''
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
这里建议本机安装mysql数据库(https://dev.mysql.com/downloads/file/?id=481160),以及navicat界面管理工具,这样就可以验证自己有没有操作数据库。
(2)数据库的增删改查语法,官网都有实例,可以参考,这里对更新数据库简单说一下:
let row = {
password(修改的字段): newPassword(要修改的值)
},
options = {
where: {
username(查询的条件):username(查询的值),
}
};
await this.app.mysql.update('数据库名', row, options);
注意:mysql服务器没有开启,或者配置有误,都会造成项目运行时报错,对应修改就可以了~~~
3.redis使用:
写接口时,一定会遇到数据存储的问题,这个时候我们通常采用redis存储数据,而非cookie或者storage(一般用于客户端存储)。
(1)redis安装:npm i egg-redis --save,然后在plugin.js里面配置如下:
exports.redis= {
enable: true,
package: 'egg-redis',
};
config.default.js配置如下:
config.redis = {
client: {
port:, // Redis port
host: '', // Redis host
password: '',//密码
db: 1//存储区
}
};
(2)redis用法(可以下载RedisDesktopManager界面管理工具查看存储情况。):
a.正常存储用法:await app.redis.set('key值', 存储值);
b.一般我们也会遇到对例如token这样存储值时效的设置,代码如下:await app.redis.set('key值', 存储值,'EX',seconds);
c.也可以通过命令行设置:
命令启动方法:
通过cmd命令到redis msi(个人安装包存放位置)目录下,执行命令,如:f:\software\redis msi>redis-server.exe redis.windows.conf;
新开窗口执行 F:\software\redis msi>redis-cli.exe -h 127.0.0.1 -p 6379。
然后输入命令:expire key seconds。
4.项目部署与应用:
(1)在该文件下打包,生成tgz文件:tar -zcvf ../FileName.tgz
(2)环境部署(建议下载Xshell客户端,当然别的工具都可以,根据个人喜好~~~):
a.进入要部署的服务器对应文件夹下,cd 等等;
b.//创建文件 mkdir 文件名称;
c.打开压缩包: rz -be;
d.解包:tar zxvf FileName.tar;
e.移除压缩包: rm -rf FileName.tar
然后就可以启动啦:npm start即可。
至此,讲解完了,对于有异议或者有更好处理方法的地方上,欢迎交流与评论~~~
egg.js与mysql的结合使用,以及部署事项的更多相关文章
- vue+egg.js+mysql一个前后端分离留言板项目
一.前序 我相信每个人前端搬运工和我想法都是一样的,都有一个做全栈的梦,无奈面对众多的后台语言,却不从下手,今天由我来带你们潜入全栈的门槛,注意是门槛.能不能学的会后面的内容全靠坚持了. 我今天主要做 ...
- Node.js框架之Egg.js
Node.js是我前段时间接触的一个JavaScript的服务端语言,感觉还是挺有意思的. 也许有人说,你学这么多,学的过来吗?或者说学的太多,专而不精,有必要这样吗? 其实,我个人认为,自从我进入I ...
- 60分钟课程: 用egg.js实现增删改查,文件上传和restfulApi, webpack react es6 (一)
今天开始我将写nodejs框架egg.js, react 实现的增删改查,文件上传等常用的b/s场景,这个将分3部分来写. 会让你在60分钟内快速 入口并应用~ 你应该用es6, node,或是ph ...
- 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计
前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...
- Serverless + Egg.js 后台管理系统实战
本文将介绍如何基于 Egg.js 和 Serverless 实现一个后台管理系统 作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个 ...
- egg.js部署到服务器
关于egg.js项目部署服务器的问题 我使用的是腾讯云centos , 部署前需要确保服务器上安装了mysql, node . mysql下载:https://dev.mysql.com/downlo ...
- egg.js in action
egg.js in action fullstack https://github.com/eggjs/egg/ cli config router service midlewares HTTP C ...
- Egg.js 是什么?
Egg.js 是什么? 阿里巴巴出 Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本. 注:Egg.js 缩写为 Egg 设 ...
- 使用egg.js开发后端API接口系统
什么是Egg.js Egg.js 为企业级框架和应用而生,我们希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本.详细的了解可以参考Egg.js的官网:https:// ...
随机推荐
- WaitGroup
WaitGroup在go语言中,用于线程同步,单从字面意思理解,wait等待的意思,group组.团队的意思,WaitGroup就是指等待一组,等待一个系列执行完成后才会继续向下执行. 先说说Wait ...
- 线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)
一.作业说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1)CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天 ...
- 数组属性的习题、Arrays工具、二维数组
一.数组的练习 1.声明一个char类型的数组, 从键盘录入6个字符: [1]遍历输出 [2]排序 [3]把char数组转化成一个逆序的数组. import java.util.Scanner; pu ...
- JavaSSM框架报HTTP Status 500 - Servlet.init() for servlet springMvc threw exception错误
如下,刚搭建的项目报这样的错,刚学框架的我一脸懵逼...网上很多说是jdk或者springmvc的的jar的版本问题,但是我其他项目都可以啊,所以排除了这个问题. 经过几个小时的排查,发现了我的问题所 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- 《前端之路》之二:数据类型转换 && 隐式转换 || 显式转换
目录 02:数据类型转换 && 隐式转换 || 显式转换 02:数据类型转换 && 隐式转换 || 显式转换 在上一个章节中,我们介绍了 JavaScript 的基本的 ...
- spring-security实现的token授权
在我的用户密码授权文章里介绍了spring-security的工作过程,不了解的同学,可以先看看用户密码授权这篇文章,在 用户密码授权模式里,主要是通过一个登陆页进行授权,然后把授权对象写到sessi ...
- Java〜slf4日志框架的使用
slf4日志可以支持注解的方式开启它,然后在使用时直接使用占位符,而不需要手动拼接字符串,这点在性能上也做到了最好. 一 build.gradle依赖项 compileOnly('org.projec ...
- 前端笔记之JavaScript面向对象(一)Object&函数上下文&构造函数&原型链
一.对象(Object) 1.1 认识对象 对象在JS中狭义对象.广义对象两种. 广义:相当于宏观概念,是狭义内容的升华,高度的提升,范围的拓展.狭义:相当于微观概念,什么是“狭”?因为内容狭隘具体, ...
- MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken
MHA简介 MHA可以自动化实现主服务器故障转移,这样就可以快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有 ...