很多时候,我们会面临在小程序的后台实现多重功能,比如用户管理、日志分析、数据排序等,不同的功能之间还会相互调用。如果把这些功能都写到一个云函数里,会造成云函数逻辑过于复杂,执行速度较慢等问题。此时,我们可以使用微信提供的SDK “wx-server-sdk” ,很方便的实现函数之间的调用。把功能函数拆分成一个个独立的云函数,会有很多好处:
本文会举例如何使用SDK,快速实现函数之间的调用,并实现邮件发送。
首先,我们创建函数test,在test云函数中发起对sendmail云函数的调用;
const cloud = require('wx-server-sdk')
cloud.init({
env: 'test-demo-id' //环境初始化
})
// 云函数入口函数
exports.main = async (event, context) => {
console.log("Start to test")
return await cloud.callFunction({
name:'sendmail',
})
}
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "latest" //在此处注明要使用的微信SDK,上传云函数的时候后台可以自动部署
}
}
在微信IDE里右键选择“上传并部署(云端安装依赖)”
// 云函数入口文件
const nodemailer = require("nodemailer");
var transporter = nodemailer.createTransport({
service: 'qq',
port: 465, // SMTP 端口
secure: true, // 使用 SSL
auth: {
user: 'xxxx@qq.com', //发邮件邮箱
pass: '*******' //此处不是qq密码是
}
});
var mailOptions = {
from: 'xxxxxxx@qq.com', // 发件地址
to: 'xxxxxxxx@qq.com', // 收件列表
subject: '测试云函数', // 标题
text: '测试云函数'
};
// 云函数入口函数
exports.main = async (event, context) => {
console.log("Start to sendemail")
//开始发送邮件
const info = await transporter.sendMail(mailOptions);
console.log('Message sent: ' + info.response);
return info
}
{
"name": "sendmail",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "latest",
"nodemailer":"^4.7.0" //在此处注明要使用的nodemailer库,上传云函数的时候后台可以自动部署
}
}
需要修改下index.js里的邮箱地址,然后在微信IDE里右键选择“上传并部署(云端安装依赖)”。
选中“test”函数,点击右上角的测试按钮,查看效果:
添加描述
添加描述
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。