体验轻服务的云函数和小中间件功能

357 阅读2分钟

笔者作为前端的新人,近期接触到字节跳动旗下的轻服务,感到很有趣且方便,故尝试了一点小玩意并写下此文将自己一些尝试分享给大家,希望能起到抛砖引玉的作用。

在阅读本文时如遇不解可先查看官方文档 数据库入门 | 轻服务文档 (qingfuwu.cn)

在制作自己的网站时,有时候为一些空白地方不知道放什么而头疼,本人作为资深杰迷,想到不如在这种地方放上杰伦歌词,可这种功能放进整个项目却有些格格不入,这时候轻服务的云函数便能派上用场了。

QQ截图20220217162422.png首先在数据库中设置好基本信息,表格名为lyrics

编写云函数如下

module.exports = async function(params, context) {
  //获取表格
  const lyricTable = inspirecloud.db.table('lyrics');

  if (params.lyrictype && params.lyrictype == 'blue') {
    // 计算表中'style'为'blue'的项的数量
    const blueItemCounts = await lyricTable.where({style: 'blue'}).count();
    // 挑出表中所有'style'为'blue'的项
    const blueItem = await lyricTable.where({style: 'blue'}).find();
    // json转数组
    const bStr = JSON.stringify(blueItem);
    var jsarr=JSON.parse( bStr );
    
  } else {
    // 计算表中项的数量
    const len = await lyricTable.where({}).count()
    // 挑出表中所有项
    const lyricItem = await lyricTable.where({}).find();
    // json转数组
    const jsonStr = JSON.stringify(lyricItem);
    var jsarr=JSON.parse( jsonStr );
  }
  
  return {
    result: jsarr
  };
}

将它上线,这样大家就可以通过接口使用它了,它在HTTP 场景下会作为 Response Body返回。因为考虑到你的网站可能是只想要一些忧伤的歌词,所以做了一个分支,你可以在请求的时候加上一个lyrictype:blue,示例如下图

QQ截图20220217172231.png

这样一来你就获得了一句周杰伦的一句伤感的歌词

QQ截图20220217172603.png

考虑到我的其它轻服务可能会到用到这个功能,于是我将其发布为中间件

将它发布为中间件并没要求对云函数做任何修改,只是为其设置了一个“命名空间”和“接口名称”,让它可以被其他人调用,相当于他人也在使用我这个云函数

QQ截图20220218005031.png

其他用户在安装中间件后可通过上图的方式调用,获得数据,然后根据需要提取出自己需要的数据,6行是可以不传入params和context的,不过这样就只会返回完整的数据而不是只返回"style"为"blue"的数据了