需求背景
目前微搭自带的 flexdb 数据模型,不支持聚合查询,在实际业务场景中经常需要按照某个字段进行分组查询或汇总某个字段的总和。


实现步骤
实现流程:


1. 微搭编辑器中,前往 APIs 管理界面,新建 APIs,选择云开发云函数。


2. 编辑 APIs 方法,填写相关的方法信息。


3. 前往云开发控制台,创建云函数。


4. 填写云函数相关信息,运行环境默认为 Nodejs 环境。


5. 云函数代码实现 云数据库聚合查询,例如按字段“xwfl”进行分组查询并汇总字段"nl"的总和。


// 云函数端示例const cloudbase = require("@cloudbase/node-sdk")const app = cloudbase.init({env: cloudbase.SYMBOL_CURRENT_ENV})const db = app.database()const $ = db.command.aggregateexports.main = async (event, context) => {const res = await db.collection('lcap-data-3U2vvCR8b-hdbm_xxxxxxx-preview').aggregate().match({num: 1 // 查询num为1的}).group({// 按 xwfl 字段分组,累加操作符,默认为_id,不可更改_id: '$xwfl',// 输出的每组记录有一个 sumAge 字段,其值是组内所有记录的 nl 字段的总和sumAge: $.sum('$nl')}).end()return {res}}
说明:
其中
db.collection('lcap-data-3U2vvCR8b-hdbm_xxxxxxx-preview')
中的云数据库标识可以在微搭数据模型基本信息中查看,区分正式环境和预览环境。

6. 单击云函数下方保存并安装依赖,复制依赖配置代码,并新建 package.json 文件,将配置依赖代码粘贴到 package.json 文件中。


7. 单击云函数下方保存,并进行云函数运行测试。


8. 云函数测试成功后,返回微搭,在云函数 APIs 方法中选择上述步骤创建的云函数。


9. 单击 APIs > 方法测试,可以看到运行测试返回结果成功。


10. 如果需要传递参数,可以在 APIs 中新建入参。


11. 在云函数中可以使用
event.xxx
的形式来接收参数。

12. 在编辑器按钮点击事件方法中调用数据源方法,配置好 APIs 相关的名称、方法、入参并保存。


13. 编辑器预览模式下,打开当前浏览器开发者模式,检查请求网络响应,可以看到成功返回查询结果。


将返回参数格式化:
{ "code": 0, "data": { "res": { "requestId": "832c105067288-1914f8aa743_1-xxxxxxxxx_2", "data": [ { "_id": "运动", "sumAge": 16 }, { "_id": "娱乐", "sumAge": 26 } ] } } }