更新记录

0.01(2021-08-15)

init


平台兼容性

阿里云 腾讯云 支付宝云
×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


btterShop-uniCloud

介绍

云开发MVC封装,参考TP5目录结构及逻辑进行封装。

目录结构

│ .gitignore │ index.js 入口文件 │ LICENSE │ package.json │ README.md │ └─application 应用文件夹 │ index.js 应用入口 │ ├─config 配置 │ dbConfig.js 数据库配置 │ errorCode.js 错误码配置 │ ├─controller 控制器 │ BaseController.js 基础控制器 │ Job.js │ ├─exception 异常类 │ AppError.js
│ DataError.js │ RouterError.js │ ├─model model层 │ BaseModel.js
│ Job.js │ ├─service 服务成 ├─utils 工具函数 │ checkData.js │ utils.js │ └─validate 验证器 index.js

项目进度

  • [x] contoller 逻辑
  • [x] model 逻辑
  • [x] validate逻辑

使用说明

配置项

config/dbConfig 数据库相关配置

config/errorCode 错误码配置

路由使用

云函数调用函数名为 cloud,router为必填参数,对应规则为控制器/控制器方法,param为请求参数

 uniCloud.callFunction({
     name:'app',
     data:{
        "router": "job/update",
        "param": {
            "_id": "28ee4e3e60587b210bfbd4f66b2c8c4d",
            "classify_id": 12,
            "work_type": "22222",
            "work_position": "武汉2",
            "work_time": "8:00-10:00"
        }
    }
 })
验证器
  • 参数验证 controller/BaseController 场景scene中默认提供了分页、详情、新增、更新及删除场景, paramRule中定义了常用场景的检验参数及规则

  • 数据入库校验

model 中定义了该模型的验证规则及场景

controller 使用

controller 需继承BaseController,提供了校验参数方法validateParam,及数据入库校验 validateData

    const BaseController = require('./BaseController')
    const JobModle = require('../model/Job')
    class Job extends BaseController {
    constructor(event,ctx) {
        super(event,ctx)
        this.model = new JobModle()

    }
    async detail() {
        this.validateParam('detail')
        this.validateData(this.param, this.model.getRule('detail'))
        let res = await this.model.detail(this.param._id)
        return this.success(res)
    }
    async add() {
        this.validateParam('add')
        this.validateData(this.param,this.model.getRule('add'))
        let res = await this.model.add(this.param)
        return this.success(res)
    }
    async del() {
        this.validateParam('del')
        this.validateData(this.param, this.model.getRule('del'))
        let res = await this.model.del(this.param._id)
        return this.success(res)
    }
    async update() {
        this.validateParam('update')
        this.validateData(this.param, this.model.getRule('update'))
        let res = await this.model.update(this.param)
        return this.success(res)
    }
    async page() {
        this.validateParam('page')
        this.validateData(this.param, this.model.getRule('page'))
        let res = await this.model.page(this.param)
        return this.success(res)
    }
    }

    module.exports = Job
异常处理

exception 定义自定义异常,自定义异常需继承Error类,指定类名及code

数据校验

validate中定义校验规则,可自行扩展

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问