微信小程序云开发生成小程序码
思路步骤:
- 在前端页面填好资料,调用云函数
- 云函数拿到前端传过来的资料,添加新的
QrCode
数据表 - 生成小程序码,生成小程序码时
"scene": QrCode._id
为数据表的id
- 将生成的小程序码存储到云空间,得到小程序码的文件路径
- 更新
QrCode
数据表,将数据表的QrCodePath
属性重新赋值成小程序码的文件路径
一、调用云函数
generateQrCode() {
// 1. 调用云函数
wx.cloud.callFunction({
name: 'addQrCode',
data: { text: '我是数据' } // 传给云函数的数据
}).then(res => {
console.log('生成成功', res)
})
}
二、云函数生成小程序码
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
// 2. 添加 QrCode 数据表
let QrCode = await db.collection('QrCode').add({
data: {
text: event.text, // 前端传过来的数据
QrCodePath: '' // 二维码的路径 现在没有所有为空
}
})
// 3. 生成小程序码 scene 为数据表的id
const result = await cloud.openapi.wxacode.getUnlimited({
"page": 'pages/me/me', // 这里是扫码后打开的页面
"scene": QrCode._id, // 为所携带的参数,相当于浏览器中 URL 后面所带的参数
"checkPath": false // 检查 page 是否存在
})
// 4. 将生成的小程序码存储到云空间
let cloudPath = Date.now() + '.png'
const upload = await cloud.uploadFile({
cloudPath: cloudPath, // 小程序码的文件名
fileContent: result.buffer // 要上传文件资源的路径
})
// 5. 更新 QrCode 数据表 将数据表的 QrCodePath 属性重新赋值成小程序码的文件路径
db.collection('QrCode').doc(QrCode._id).update({data: { QrCodePath: upload.fileID }})
})
参考文档
如果该文章能帮到你的话 麻烦点个赞 谢谢啦~