【青训营】- 轻服务 简易上手教程

635 阅读2分钟

轻服务 简易上手教程

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战

轻服务是面向未来的云服务, 提供开箱即用的开发体验。开发者无需考虑服务器和数据库等基础设施的搭建,更不用操心测试环境配置、数据备份和线上运维等一系列繁琐之事,只需专注于产品开发本身。

主页在这:轻服务 - 先于时代的云服务 (qingfuwu.cn)

新建服务

image-20210826115353437.png

进入到 Dashboard 界面后点击创建服务后输入服务名称即可新建服务。

云函数

image-20210826120845406.png

新建服务后会帮助我们生成一个新的云函数,我们基本不用看原函数写了什么,需要如何做数据处理按照你自己写 JavaScript 的节奏写就可以。

比如我在这里新建一个计算加法的云函数,代码如下

 module.exports = async function(params, context) {
   const addend1 = Number(params.addend1);
   const addend2 = Number(params.addend2);
 ​
   return {
     sum: addend1 + addend2
   }
 }

在调用轻服务的云函数时,我们推荐使用 POST 方法。这里为了方便演示使用 GET 方法,测试数据如下:

 {
   "addend1": 200,
   "addend2": 33
 }

注意点:

  • 返回的是一个对象 {key: value, key: value, ...}
  • 数据从 params 处使用 . 操作符获取
  • GET 请求的参数均为 stringArray<string> 类型,即 ?a=1params.a === '1'

测试完毕后点击上线会给一个调用地址:qcnp4x.fn.thelarkcloud.com/hello

此方法使用了 GET,所以我们直接在调用地址后边拼接 ?addend1=200&addend2=33 即可实现调用

qcnp4x.fn.thelarkcloud.com/hello?adden…

数据库

轻服务提供了一套简单易用的数据库功能,在云函数中,只需通过 inspirecloud.db 即可进行操作。例如:

  • 从数据库中获取一张表(如果没有就新建)
 let myTable = inspirecloud.db.table('myTable')

插入数据

  • 向一张表中插入一条数据
 const result = await myTable.save({key: value, key: value})

如果表中没有查找到 key 的同名字段则自动添加一个字段到表中

  • 向表中插入多条数据
 const result = await myTable.save([
     {
         key: value,
         key: value
     },
     {
         key: value,
         key: value
     }
 ])
  • 插入相关联的数据
 const chest = chestTable.create({name: '箱子', items: []})
 const apple = itemTable.create({name: '苹果'})
 ​
 chest.items.push(apple._id)
 const chestResult = await chestTable.save(chest)
 const appleResult = await itemTable.save(apple);

*._id 表中的唯一性字段不重复

查询数据

  • 查询全部数据
 const itemList = await itemTable.where().find()
  • 等于条件查询
 const itemList = await itemTable.where({name: '苹果'}).find()
  • 大于小于条件查询
 // 引入 inspirecloud.db 便于使用操作符
 const db = inspirecloud.db;
 db.gt()             // 大于
 db.lt()             // 小于
 db.gte()            // 大于等于
 db.lte()            // 小于等于
 db.gt().lte()       // 大于且小于等于
 const itemList = await itemTable.where({count: db.gt(64)}).find()
  • 字段查询

假设数据包含字段 _id, a, b, c,举例如下:

projection({a: 1, b: 1}) 返回结果包含 _id, a, b

projection({a: 0, b: 0}) 返回结果包含 _id, c

projection({a: 1, b: 1, _id: 0}) 强行隐藏 _id,返回结果包含 a, b

const goodsItemList = await GoodsTable.where().projection({item: 1}).find();