更新记录

0.1.1(2021-05-11)

修复已知bug

0.1.0(2021-05-07)

新增查询排序

查看更多

平台兼容性

阿里云 腾讯云

云函数类插件通用教程

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


本插件是uni-cloud-router的扩展插件,解放开发的CRUD。慢慢丰富。

一、controller

在你新建的controller的js中,导入

const {DxController} = require('dx-router-admin')

从你写的class继承DxController

module.exports = class TestController extends DxController {

  constructor(ctx) {
            super(ctx)
            //service的目录层级
            this.$service = 'test.test';
            //数据的校验规则,
            this.rules = {
                name: this.Joi.string().required().error(new Error('姓名不能为空'))
            }
    }

    // this.tool 挂载了工具函数

    //内置了 
    // add[增加一条数据] 
    // edit[根据_id编辑一条数据] 
  // index[列表查询] 
  // find[单条查询] 
  // del [单条或多条删除数据]
  // where [index,find,del的条件组装,格式为 
  //where:{name:['like%','张'],age:['=',10]}]
  // 以数组形式,单数键值为条件,双数的键值为查询的值

  //重写 获取数据
    async index() {
        let where = this.where();
        let res = await this.methods.with(['table1','table2']).select(where);
        return this.success('获取成功', res);
    }

}

数据校验使用了Joi校验,详见更多Joi操作文档


二、service


在你新建的service的js中,导入const {DxService} = require('dx-router-admin')从你写的class继承DxService



module.exports = class TestService extends DxService {
    constructor(ctx) {
        super(ctx)
        this.table = 'uni-dx-test';
        this.create_time = 'create_date';//如果配置了,自动设置时间
        this.update_time = 'update_date';//如果配置了,自动设置时间

        this.field = {
            create_date: '创建时间',
            name: '姓名',
            age: "年龄",
            gender: "性别",
            hobby: "爱好",
            education: "学历",
            skill: "技能",
            status: "状态",
            son1_id: "",
            son2_id: []
        }
        //追加属性
        this.append = ['status_text','gender_text'];
    }
    //初始化,挂载事件
    init() {
        this.beforeInsert(async (param, result) => {
      //data 数据源 
      //result 结果对象
      // return false 走完这里的逻辑,直接return,不往下走

      //throw new Error() //也可以抛出错误,返回

      // return true 走完这里继续
        })

        this.beforeUpdate(async (_id, param, result) => {
      // 同 insert
        })

      this.beforeDelete(async (param, result) => {
      // 同 insert 
        })

        this.afterInsert(function(data, result) {
          //不做处理返回值
        })

        this.afterUpdate(function(_id, param, result) {
      //不做处理返回值
        })

      this.afterDelete(function(data,) {
      //不做处理返回值
        })
    }
    //获取追加属性
    get_status_text_attr(value) {
        return value ? '正常' : '禁用';
    }
    //获取器
    get_age_attr(){

    }
    //设置器
  set_status_attr(value){
    return true;
  }

  //设置和获取暂只支持 _ 写法。

    //简单的关联
    son1() {
        return this.withTable('uni-dx-son1', 'son1_id', 'son1_id', 'son1_list');
    }
    son2() {
        return this.withTable('uni-dx-son2', 'son2_id', 'son2_id', 'son2_list')
    }

    // this.delAll() // 全部删除

}


三、工具函数

// this.tool.uuid(len, radix) //唯一id
// this.tool.random(min, max) 随机数
// this.tool.is_empty(value)
// this.tool.is_numeric(value)
// this.tool.is_object(value)
// this.tool.isEmail(value)
// this.tool.isChinese(value)
// this.tool.isMobile(value)
// this.tool.isPhone(value)
// this.tool.deepClone(obj1,obj2) 深度克隆

导入示例项目,在导入本公共模块。

隐私、权限声明

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

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

插件不采集任务数据

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

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