小程序云函数调用云函数
文章目录前言一、案例说明二、功能实现1.云函数1:getdata2.云函数2:deldata总结前言小程序云开发提供了云函数,云函数是运行在服务端的代码,执行速度快。通常一些复杂的功能逻辑或读取云数据库都可使用云函数实现,高效安全。而云函数之间也是可以相互调用的,这样可以使得功能逻辑模块化,提高可读性。一、案例说明场景:在一个集合中,不定时增加新的记录,每个集合都有一个createTime字段,以
·
前言
小程序云开发提供了云函数,云函数是运行在服务端的代码,执行速度快。通常一些复杂的功能逻辑或读取云数据库都可使用云函数实现,高效安全。而云函数之间也是可以相互调用的,这样可以使得功能逻辑模块化,提高可读性。
一、案例说明
场景:在一个集合中,不定时增加新的记录,每个集合都有一个createTime字段,以毫秒存储记录创建时的时间。当集合中的记录离当前时间过了很久后,希望这条记录被删除,以确保记录都是最新的。
分析:查询记录的条件是时间差(假设120秒),而云开发数据库操作提供的查询指令并不支持运算,因此需要把记录先读取出来再做判断。
解决:创建两个云函数,一个负责读取所有记录,另一个负责调用前一个云函数获取所有记录,然后再处理。
二、功能实现
1.云函数1:getdata
注意:云函数只能最多一次读取集合中 100 条的记录,这里假设记录不足100条,可以一次性读取完。
代码如下(示例):
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const db = cloud.database()
try {
return await db.collection('testTrigger').get() //testTrigger是集合名
} catch (e) {
console.error(e)
}
}
2.云函数2:deldata
代码如下(示例):
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const db = cloud.database()
const t = new Date(); //获取当前时间
const res = await cloud.callFunction({ //调用云函数getdate
// 要调用的云函数名称
name: 'getdata',
// 传递给云函数的参数
data: {
}
})
const arr=res.result.data; //把所有记录给arr
try{
for (let i = 0; i < arr.length;i++){
if (t.getTime() - arr[i].createTime > 120000) { // 计算差值,删除的条件
await db.collection('testTrigger').doc(arr[i]._id).remove()
}
}
return arr.length;
} catch (e) {
console.error(e)
}
}
两个云函数处理各自的逻辑,最终实现删除旧的记录
总结
在云函数中调用云函数与在小程序端类似,不过因为云函数运行在服务端,不需要加 wx. 前缀。我们一开始调用时,习惯性复制粘贴,因此比较容易出现这个问题,使得云函数无法运行。
更多推荐
已为社区贡献4条内容
所有评论(0)