# 云函数总览

# 一、云函数简介

云函数是一种在云端运行的代码片段,无需管理服务器即可执行。它允许开发者将代码部署到云端,通过事件触发或API调用执行。

核心特性:

  • 支持 JavaScript (ES6) 语法
  • 内置数据库操作能力
  • 丰富的加密工具函数
  • HTTP 请求支持(需配置白名单)
  • 30秒执行超时保护

# 二、云函数使用场景

  • API后端服务:作为RESTful API的后端,处理客户端请求,返回数据
  • 事件驱动任务:数据库事件触发执行
  • 微服务架构:将复杂应用拆分为多个云函数
  • 自定义业务逻辑:支持客户端自定义参数调用

# 三、内置对象

云函数运行时注入以下全局对象:

对象 说明
potato 核心业务对象,提供数据库、加密、用户等操作
console 日志对象,支持 log/error/warn 方法
params 客户端传入的自定义参数(展开到全局)

# 四、内置函数列表

# 4.1 数据库操作

云函数数据库方法的 param 与对应 HTTP 数据库接口 body 一致,详见各方法文档及 数据库总览。

方法 说明 param 要点
potato.selectOne(tableName, param) 查询一条 字段平铺等值条件,如 { id: '1' }
potato.selectList(tableName, param) 查询多条 { where:[{reg,column,value}], pc:{p,s} },勿平铺字段
potato.addOne(tableName, param) 添加一条 字段平铺,如 { name: 111 }
potato.addList(tableName, param) 添加多条 { list: [ {...}, {...} ] },单次最多 1000
potato.updateOne(tableName, param) 修改 { column:{...}, where:{...} }(where 等值对象)
potato.updateList(tableName, param) 批量修改 { column:{...}, where:[{reg,column,value}], limit },limit 默认/上限 500
potato.deleteOne(tableName, param) 删除 { where:{...} }(where 等值对象)
potato.deleteList(tableName, param) 批量删除 { where:[{reg,column,value}], limit },limit 默认/上限 500

# 4.2 用户操作

方法 说明 参数
potato.findCurrentUserInfo() 查询当前登录用户信息 无
potato.updateCurrentUserInfo(param) 修改当前登录用户信息 param: 要修改的字段对象
potato.getCurrentUserId() 获取当前登录用户ID 无
potato.updateUser(param) 修改指定用户信息 param: 包含userId和修改字段的对象

# 4.3 卡密操作

方法 说明 参数
potato.verifyCardV1(param) 验证卡密V1(会员制) param: {card: "卡密"}
potato.verifyCardV2(param) 验证卡密V2(时长制) param: {card: "卡密"}
potato.createCardMy(param) 创建卡密 param: 卡密配置对象
potato.findOneCard(card) 查询卡密详情 card: 卡密字符串
potato.updateCard(param) 修改卡密 param: 卡密修改对象
potato.delCard(card) 删除卡密 card: 卡密字符串

# 4.4 加密工具

方法 说明 参数
potato.md5(data) MD5加密 data: 待加密字符串
potato.sha1(data) SHA1加密 data: 待加密字符串
potato.sha256(data) SHA256加密 data: 待加密字符串
potato.hmacSha256(data, secretKey) HMAC-SHA256加密 data: 数据, secretKey: 密钥
potato.hmacSha512(data, secretKey) HMAC-SHA512加密 data: 数据, secretKey: 密钥
potato.aesEncrypt(data, secretKey) AES加密(AES/ECB/PKCS5Padding,与接口加密类型 2 一致;密钥不足 32 字节用 0 补齐;输出 Base64) data: 明文, secretKey: 密钥
potato.aesDecrypt(data, secretKey) AES解密(同上) data: Base64密文, secretKey: 密钥

# 4.5 应用信息

方法 说明 参数
potato.getAppInfo() 获取当前应用信息 无
potato.getRequestIp() 获取请求IP地址 无

# 4.6 网络请求

注意:HTTP请求的URL必须在应用配置的白名单内

方法 说明 参数
potato.httpGet(url) HTTP GET请求 url: 请求地址(需在白名单内)
potato.httpPost(url, body) HTTP POST请求 url: 请求地址, body: 请求体(字符串或对象)

# 4.7 其他功能

方法 说明 参数
potato.registerV2(param) 用户注册V2 param: 注册信息对象
potato.userByVipWithBalance(param) 使用余额购买会员 param: 购买参数对象
potato.sendWeChatMessage(param) 发送公众号通知 param: 消息参数对象

# 五、自定义参数调用

客户端调用云函数支持自定义参数,使用 params 进行传递。请求头验签规则与普通接口相同,见 接口规范(V1 / V2 / V3)。

# 请求示例

{
    "name": "myFunction",
    "params": {
        "userId": "123",
        "action": "getData"
    }
}
1
2
3
4
5
6
7

# 云函数获取参数

// params 中的字段会直接展开到全局作用域
// 可以直接使用 userId、action 变量

function processData() {
    console.log('用户ID:', userId);
    console.log('操作类型:', action);

    // selectOne:字段平铺(与 /api/selectOne 一致)
    var one = potato.selectOne('users', { id: userId });

    // selectList:必须用 where + pc(与 /api/selectList 一致)
    var list = potato.selectList('users', {
        where: [
            { reg: 'eq', column: 'id', value: userId }
        ],
        pc: { p: 1, s: 100 }
    });

    return { one: one, list: list };
}

processData();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 六、返回值规范

云函数执行结果会自动包装为以下格式:

{
    "code": "200",
    "message": "success",
    "status": true,
    "data": "函数返回值",
    "pc": null,
    "time": null,
    "nonce": null,
    "sign": null,
    "reqSign": null
}
1
2
3
4
5
6
7
8
9
10
11

# 七、注意事项

  1. 执行超时:云函数执行超时时间为30秒,超时会自动终止
  2. 数据库权限:使用数据库操作需要开通会员并配置数据源
  3. HTTP白名单:httpGet/httpPost 的URL必须在应用白名单中
  4. 安全沙箱:云函数运行在安全沙箱中,无法直接访问Java类
  5. 日志输出:使用 console.log() 输出调试信息,可在后台查看
  6. 验签:客户端调用 /api/execFunction 时,请求头验签与其它接口相同,见 接口规范
lastUpdate: 10/15/2026, 3:34:23 PM