云函数实战教程

云函数介绍

云函数相关文档请移步这里

云函数实战

下面我们向大家展示一个云函数实战的案例。要实现的功能点:当数据表新增一条数据时,通过触发器调用云函数,云函数再对该条数据的 hash 字段进行修改操作。生成的每一行数据的 hash 字段值都是唯一的,比起 id 更加简短,利于用户在其他地方使用。

准备工作

我们先在数据页面,创建一个 table 数据表,然后添加如下一个字段:

字段名称类型
hashstring

创建云函数 setHash

创建云函数创建云函数

  1. // 数据表 id
  2. const TABLE_ID = 111111
  3. const genUniqueID = (len = 5) => {
  4. const LENGTH = len
  5. let number = Math.floor(Math.random() * Math.pow(10, LENGTH))
  6. let length = number.toString().length
  7. let tmp = (0).toFixed(LENGTH).split('.')[1]
  8. return tmp.slice(0, LENGTH - length) + number
  9. }
  10. exports.main = async function setHash(event, callback) {
  11. let MyTableObject = new BaaS.TableObject(TABLE_ID)
  12. while (true) {
  13. let hash = 'c' + genUniqueID()
  14. // 设定查询条件
  15. let query = new BaaS.Query()
  16. query.compare('hash', '=', hash)
  17. // 根据指定条件查询数据
  18. let res = await MyTableObject.setQuery(query).find()
  19. // 如数据表已存在该 hash ,则重新生成 hash 值
  20. if (res.data.objects.length > 0) {
  21. continue;
  22. }
  23. // event.data.id 为触发该云函数的当前数据行 id
  24. let MyRecord = MyTableObject.getWithoutData(event.data.id)
  25. // 更新 hash 字段值
  26. await MyRecord.set('hash', hash)
  27. await MyRecord.update()
  28. return callback(null, 0)
  29. }
  30. }

创建触发器

触发类型为数据表,设定触发条件为数据表的 create 操作,触发动作为 调用云函数 setHash

触发器:设置唯一 hash触发器:设置唯一 hash

测试云函数

在 table 数据表中新增一行数据,hash 字段不用赋值。之后触发器就会被你的 create 操作触发,从而调用 setHash 云函数,最后 hash 字段的值就被更新了。如下:

数据表:新增一行数据表:新增一行

云函数调用日志如下:

云函数:调用日志云函数:调用日志