钢铁信息小程序开发综述(三)——EggJS
小程序开发
浏览:1135 次

这是后端简介
1、 系统环境简介
节点JS
MySQL数据库
Redis公司
1.节点JS
JS服务器运行环境
参考材料:
2.MySQL数据库
开源关系数据库
参考材料:
3.Redis
开源、网络支持、基于内存和可选的持久性键值对存储数据库
参考材料:
2、 EggJS相关插件
卵子后遗症
鸡蛋红
鸡蛋jwt
鸡蛋路由器plus
鸡蛋验证
蛋心
鸡蛋视图双节棍
卵子zrole
1.抑制鸡蛋
Sequalize的EggJS插件Sequalise是MySQL的ORM框架
参考材料:
2.蛋黄
Redis的EggJS插件
参考材料:
3.鸡蛋-jwt
EggJS的JWT插件
参考材料:
4.蛋卷
EggJS的路由增强插件主要用于为路由统一添加前缀
参考材料:
5.鸡蛋有效期
EggJS参数验证插件
参考材料:
6.蛋卷
EggJS的访问控制插件
参考材料:
7.鸡蛋视图
EggJS的模板渲染引擎插件的语法类似于Django
参考材料:
8.蛋黄
基于EggJS的Casbin的权限控制插件
参考材料:
3、 项目目录
.
├── app.js

├── 服务器.js
├── app
│ ├── 路由器。js语言
│ ├── 控制器
│ ├── 延伸
│ ├── 中间件
│ ├── 服务
│ ├── 平民的
│ ├── 看法
│ ├── 路由器
│ L—模型(自建Sequelize目录)
└── 配置
├── 插件.js
├── config.default.js
└── 配置产品.js
以上内容介绍如下:
app/路由器。Js用于配置URL路由规则。
App/controller/用于解析用户输入并在处理后返回响应结果。
app/extend/用于扩展框架的内部对象(请求、响应、上下文、app)和编写工具类(助手)。
app/中间件/用于编写中间件。
App/service/用于编写业务逻辑,如数据库操作和api请求的封装。
App/public/用于放置静态文件。
App/view/用于放置模板文件。
App/model/用于放置数据模型。
app/路由器/用户放置分开的路由
app。Js用于在启动时自定义初始化。
服务器Js用于部署pm2启动服务器。js使用pm2
4、 相关业务逻辑
1.寻呼逻辑
分页中间件,用于获取分页和其他查询参数
单元exports=async(ctx,next)=>{
const{query}=ctx.request
ctx.验证({
pageField:{type:“string”,必需:false},
pageSort:{类型:“enum”,值:[“ASC”,“DESC”],必需:false},
pageSize:{type:“string”,格式:/\d+/,必需:false},
pageIndex:{type:“string”,格式:/\d+/,必需:false},
},查询)
常量{
pageField=“updated_ at”,
pageSort=“DESC”,
}=查询
//~~用于数学floor函数,将undefined和null转换为数字0
const pageSize=~~查询。页面大小||20
const pageIndex=~~查询。页面索引||1
ctx。page={pageField,pageSort,pageSize,pageIndex}
返回next()
}
求和服务,获取列表总数
异步findCount({modelName,其中={}}){

返回this.ctx.model[modelName].count({
哪里
})
}
根据查询参数获取列表数据
异步查找页({
型号名称,
其中={},
页
属性={},
include=[],
}) {
常量{
标页码
}=this.ctx.helper
常量{
顺序
抵消
限度
}=分页(页)
return this.ctx.model[modelName].findAll({
哪里
顺序
抵消
限度
属性,
包括
})
}
实例
1.控制器,获取用户日志
异步获取用户日志(){
const{ctx,app}=此
让{page}=ctx
const{common}=ctx.service
console.log(第页)
页码={
页
pageField:“id”,
pageSort:“DESC”
}
const[total,items]=等待Promise.all([
常见的findCount({modelName:“日志”}),
常见的findPage({modelName:“日志”,页}),
])
const res={total,items,pageSize:page.pageSize,pageIndex:page.page索引}
ctx.helper。成功({ctx,res:res})
}
2.配置路由并引入寻呼中间件
apiV1路由器。get('/log',app.jwt,middleware.pagination,controller.api.user.getUserLog)
