# 前提条件

注册好uniCloud (opens new window)账户密码,并新建一个云空间,云函数选择云空间

# 快速开发

# 1、编写云函数

cool/controller/app下新建test.js文件夹内容如下:

'use strict';
/**
 * 日志
 */
const crud = require("crud");
module.exports = {
    ...crud,
    /**
	 * 初始化
	 */
	async init() {
		const { params } = this.ctx;
		return { table: 'sys_log' };
	},
}

这样我们就完成了一个云函数的增删改查,拥有的方法:

  • /app/test/add 新增
  • /app/test/delete 删除
  • /app/test/update 更新
  • /app/test/info 单个信息
  • /app/test/list 列表信息
  • /app/test/page 分页查询(包含模糊查询、字段全匹配等)

# 2、调用云函数

# 分页查询
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/page',
		params: {
			size: 20, // 每页条数 默认15
			page: 1, // 第几页 默认 1
			order: 'createTime', // 排序字段 默认 'createTime'
			sort: 'desc', // 排序方向  默认'desc'
			keyWord: '啊平',  // 模糊查询关键字, 对应后端云函数 init 对象 pageOption keyWordLikeFields 配置
			age: 20, // 可以筛选其他全等于字段  对应后端云函数 init 对象 pageOption fieldEq 配置
		}
	}
  }).then(res => {
	  console.log(res)
  });

相关后端云函数初始化配置可以查看初始化配置

# 新增
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/add',
		params: {
			name: '啊平',
			age: 20
		}
	}
  }).then(res => {
	  console.log(res)
  });
# 删除
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/delete',
		params: {
			ids: ['1', '2']
		}
	}
  }).then(res => {
	  console.log(res)
  });
# 修改
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/update',
		params: {
			_id: '1',
			name: '啊平',
			age: 21
		}
	}
  }).then(res => {
	  console.log(res)
  });
# 单个信息
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/info',
		params: {
			_id: '1'
		}
	}
  }).then(res => {
	  console.log(res)
  });
# 列表
uniCloud.callFunction({
    name: 'cool',
    data: { 
		url: '/app/test/list',
		params: {}
	}
  }).then(res => {
	  console.log(res)
  });

# 配置

初始化一个云函数,在cool/controller

'use strict';
/**
 * 日志
 */
const crud = require("crud");
module.exports = {
    ...crud,
    /**
	 * 初始化
	 */
	async init() {
		const { params } = this.ctx;
		return {
			table: 'sys_log',
			pageOption: {
                fieldEq: ['name'],
				keyWordLikeFields: ['action', 'name', 'ipAddr'],
				where: {
					departmentId: params.departmentIds ? db.command.in(params.departmentIds.split(',')) : []
				}
			}
		};
	}
}

# 对象

参数 类型 必填 说明
table 字符串 云数据库的表名
pageOption 字符串 分页信息查询条件配置

# pageOption

参数 类型 说明
keyWordLikeFields 数组 模糊查询匹配的字段,对应客户端参数keyWord
fieldEq 数组 筛选字段相等
where 对象 设置其他条件

# 介绍

框架会为每个controllerservices注入一个ctx对象,它包含在整个请求的生命周期。

# 内容

每个ctx都包含有以下内容:

参数 说明
currentUser 当前登录的用户
config 配置信息, 对应cool/config.js
request 原始的云函数context
params 业务参数
services 所有的services对象
utils 工具函数

# currentUser

参数 类型 说明
roleIds 数组 角色ID数组
userId 字符串 用户ID
username 字符串 用户名
passwordVersion 数字 密码版本

# db

对应公告函数common/db

参数 类型 说明
baseDB 对象 原始的数据库对象
command 对象 操作指令
collection 函数 获得对应的数据表
add 函数 新增,参数表名需要新增的数据
delete 函数 删除,参数表名id数组或者按逗号隔开的字符串
update 函数 更新,参数表名需要更新的数据
info 函数 信息,参数表名表ID
one 函数 单个,参数表名条件
list 函数 列表,参数表名
page 函数 分页,参数表名条件第几页每页条数排序字段排序方向

# utils

参数 类型 说明
uuid 函数 生成唯一ID
md5 函数 MD5加密
moment 函数 时间操作工具,文档 (opens new window)
lodash 函数 强大的js工具库,文档 (opens new window)
jwt 函数 生成token
getIpAddr 函数 获得IP地址,如:中国福建厦门市