钢铁信息小程序开发综述(三)——EggJS

小程序开发


浏览:1115 次

这是后端简介

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)

2.文本