【云开发】使用微信的云开发完成brainyquote小程序的完整前后端开发
【云开发】使用微信的云开发完成brainyquote小程序的完整前后端开发
❄️2winter过年这几天写了一个小程序,练手云开发,因为之前用过几次Node.js想到云开发也支持,就试试了,反正微信免费的额度也够了。
涉及的内容
注意几个坑啊:云函数配置文件加上权限列表,订阅消息和模板消息不一样。
- 云函数
- 云数据库
- 定时任务
- 订阅消息
小程序简介:
我这里小程序后端是Node.js写的爬虫(用的云开发)
提供brainyquote每日的英文推荐,支持搜索,订阅每日推送。
开始
前端
小程序:UI看图就好了。
订阅页面
云函数:
开始引入云函数:首先建立一个文件夹用来放云函数(其实就是一个云端的Node.js函数)。
我的是 fcs 然后你需要在项目配置文件里加上这个目录:
然后fcs就有了云的图标。
右键就可以新建云函数。
看一个最基本的云函数,也会用到,获取用户的openid
1 | // 云函数入口文件 |
右键上传部署云端。
我们在小程序端调用一下看看。
1 | wx.cloud.callFunction({ |
可以看到是一个Promise的函数。用的wx.cloud.callFunction()来调用我们的云函数,这里注意你的云环境要提前初始化,我在app.js初始化的:wx.cloud.init()
如果你想给云函数加参数:xxcallFunction({data:{xxxx}}),云函数里面用event.xx来使用。
我们的数据都是通过云函数提供的,其实就是几个node.js爬虫,用的requests和cheerio模块。写完云函数,可以本地部署测试一下。
这里不说node了,可以去看一下文档,有js基础,很容易。
现在拿到数据,小程序基本可以用了,但是,我们要做的个性化啊,比如搜索:用到了云函数加参数,上面说了。
更进一步,我们加个订阅消息,每天给用户推送一句英文语录。
先去小程序后台添加一个消息模板,拿到模板ID后。
requestSubscribeMessage
申请订阅消息,我写到工具模块了,可以直接用。
1 | const order = function(db,openid){ |
看看sub函数如何操作数据库的。
1 | // 云函数入口文件 |
订阅完成后,处理定时任务推送:要使用定时任务,需要在这个云函数的文件里加一个config.json的文件,填写一下配置,注意不可以有注释,不然提醒你部署触发器一直失败!
Cron语法,可以百度,微信官方也有说明,秒 分 时 xxx等 * 代表每
1 | ``` |
1 |
|
const cloud = require(‘wx-server-sdk’)
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: ‘OPENID’,
page: ‘index’,
data: {
number01: {
value: ‘339208499’
},
date01: {
value: ‘2015年01月05日’
},
site01: {
value: ‘TIT创意园’
},
site02: {
value: ‘广州市新港中路397号’
}
},
templateId: ‘TEMPLATE_ID’
})
console.log(result)
return result
} catch (err) {
console.log(err)
return err
}
}
1 |
|
let users = (await cloud.callFunction({
name: ‘quote-users’
})).result;
1 |
|
for(let i of users){
console.log(i);
//推送
cloud.openapi.subscribeMessage.send({
xxxxxx
完成后,右键云函数:部署云端,部署触发器。
如果觉得没底,可以把cron改成5s的,先测试一下,或者手动触发调试。
---由于过年了,小程序还没审核完成,想体验一下的小伙伴,可以回复公众号:秋果科技工作室:quote 申请体验。
已经上线:微信搜索小程序:brainyquoteLite即可。

云开发后台
