前言
在微信小程序里,如果我们没学过后端语言,又想做数据存储,订阅的话,可以使用微信自带的云开发,上手了云开发,真的超级好用,拓展:可以给女朋友开发专属你们的小程序喔
正文
一、微信后台配置订阅模板
找到订阅功能
获取到配置
注意:详细内容我们会在云函数会使用到
二、找到云开发后台,在数据库新增个表存储用户数据,用于发布订阅消息使用
这里我用到的是使用openid作为唯一标识
在小程序端代码插入数据库里
三、云开发新增订阅消息的云函数
在config.json开放权限“订阅消息”
{ "permissions": { "openapi": [ "subscribeMessage.send" ] }, "triggers": [ { "name": "myTrigger", "type": "timer", "config": "0 0 9 * * * *" } ] }
triggers是微信的触发器,定时触发,就不用人工去触发,怎么配置在微信文档都能清晰的找到,链接: developers.weixin.qq.com/miniprogram…
云开发订阅代码
1.获取数据库所有的数据
tips:因为有最多一次取 100 条的限制,因此很可能一个请求无法取出所有数据,需要分批次取 `
const MAX_LIMIT = 100
// 先取出集合记录总数
let countResult = await db.collection('subscript_user').where({
date:yesterDay
}).count()
let total = countResult.total
// 所有数据
let totalData = []
let tasks = []
// 计算需分几次取
const batchTimes = Math.ceil(total / 100)
for (let i = 0; i < batchTimes; i++) {
const promise = db.collection('subscript_user').where({
date:yesterDay
}).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
totalData = (await Promise.all(tasks)).reduce((acc, cur) => {
return {
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
}
})
` where是我业务上的需要,可以不用关注
2.接着往下写订阅的代码
tips: cloud.openapi.subscribeMessage.send一次调用只能发给一个用户,所有要循环调用该接口 `
for(let a = 0;a < totalData.data.length;a++){
cloud.openapi.subscribeMessage.send({
"touser":totalData.data[a]["_openid"],
"page":`pages/xxx/xxx`
lang: 'zh_CN',
"templateId":"模板ID
"miniprogramState": 'formal',
"data": {
"thing6": {
"value": "xxx"
},
"thing2": {
"value": `xxxx投票`
},
"thing1": {
"value": "投票开始啦,请进入小程序投票!"
},
"thing9": {
"value": "每日都来投票喔"
},
}
})
}
题外话:如果数据库全部发布完,可以清空掉数据库的数据。这里使用 删除多条记录(page每条数据都包含的)
await db.collection('subscript_user').where({
page:db.command.exists(true),
}).remove()
`
结语
到这里,整个订阅消息就跑通了。有几点注意,触发器必须“上传并部署:所有文件”完成之后,在上传,否则会出现其他问题。是不是很简单,赶紧去试试吧。拓展:可以给女朋友订阅你们自己的消息,提醒他节日快到了,黑丝安排