- 是否可以通过云函数定期导出数据库呢
- 需求的场景描述(希望解决的问题) 定期备份云开发里的数据库 - 希望提供的能力 通过云函数进行数据库的导出。可以导出到私有COS的桶嘛~ Or 开发者工具提供cli命令 ,写个bash或脚本 cron执行导出 也可以。
2018-11-29 - 服务端:A环境下的云函数在B环境中创建了文件!
- 当前 Bug 的表现(可附上截图) [图片] 如图,环境ID是xwjtest,返回结果中的fileID是xwj-1..下的文件。 在云开发后台看也是如此。这个png图片未出现在xwjtest的存储管理中,却出现在了xwj-1..的存储管理下 xwjtest下有服务器端云函数getQrcode(用于生成图片),但存储管理中没有文件。 xwj-1..下没有任何云函数,但存储管理中生成了由getQrcode生成的图片文件。 getQrcode云函数中特意指定了test环境,依然出现此bug [代码]cloud.init({[代码] [代码]env: [代码][代码]'xwjtest'[代码] [代码]});[代码] - 预期表现 环境隔离 - 复现路径 小程序端调用服务器端的云函数,云函数的功能为创建一个图片文件 - 提供一个最简复现 Demo [代码]// 小程序端[代码][代码] [代码][代码]wx.cloud.callFunction({[代码][代码] [代码][代码]name: [代码][代码]'getQrcode'[代码][代码], [代码][代码]// 云函数名称[代码][代码] [代码][代码]data: { [代码][代码]// 小程序码所需的参数[代码][代码] [代码][代码]page: [代码][代码]"pages/index/index"[代码][代码] [代码][代码]},[代码][代码] [代码][代码]complete: res => {[代码][代码] [代码][代码]// console.log('callFunction test result: ', res)[代码][代码] [代码][代码]this[代码][代码].setData({ [代码][代码]// 获取返回的小程序码[代码][代码] [代码][代码]qrcodeUrl: res.result.fileID[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码]//服务器云函数[代码][代码]// 导入框架[代码][代码]const cloud = require([代码][代码]'wx-server-sdk'[代码][代码]);[代码][代码]const axios = require([代码][代码]'axios'[代码][代码]);[代码][代码]var[代码] [代码]rp = require([代码][代码]'request-promise'[代码][代码]);[代码][代码]cloud.init({[代码][代码] [代码][代码]//上线时需调整为正式环境[代码][代码] [代码][代码]env: [代码][代码]'xwjtest'[代码][代码]});[代码] [代码]/**[代码][代码] [代码][代码]* 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端[代码][代码] [代码][代码]* [代码][代码] [代码][代码]* event 参数包含[代码][代码] [代码][代码]* - 小程序端调用传入的 data[代码][代码] [代码][代码]* - 经过微信鉴权直接可信的用户唯一标识 openid [代码][代码] [代码][代码]* [代码][代码] [代码][代码]*/[代码] [代码]// 云函数入口函数[代码][代码]exports.main = async(event, context) => {[代码][代码] [代码][代码]console.log(event);[代码][代码] [代码][代码]try[代码] [代码]{[代码] [代码] [代码][代码]const AppID = [代码][代码]'AppIDxxxxxxxx'[代码][代码],[代码][代码] [代码][代码]AppSecret = [代码][代码]'AppSecretxxxxxxxxx'[代码][代码];[代码][代码] [代码][代码]const getAccessTokenUrl = [代码][代码]'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='[代码] [代码]+ AppID + [代码][代码]'&secret='[代码] [代码]+ AppSecret;[代码][代码] [代码][代码]const resultValue = await rp(getAccessTokenUrl);[代码][代码] [代码][代码]const token = JSON.parse(resultValue).access_token;[代码][代码] [代码][代码]console.log([代码][代码]'------ TOKEN:'[代码][代码], token);[代码] [代码] [代码][代码]// 请求小程序码,使用接口B[代码][代码] [代码][代码]const response = await axios({[代码][代码] [代码][代码]method: [代码][代码]'post'[代码][代码],[代码][代码] [代码][代码]url: [代码][代码]'https://api.weixin.qq.com/wxa/getwxacodeunlimit'[代码][代码],[代码][代码] [代码][代码]responseType: [代码][代码]'stream'[代码][代码],[代码][代码] [代码][代码]params: {[代码][代码] [代码][代码]access_token: token[代码][代码] [代码][代码]},[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]page: event.page,[代码][代码] [代码][代码]width: 430,[代码][代码] [代码][代码]scene: [代码][代码]"id="[代码] [代码]+ event.userInfo.openId[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码] [代码] [代码][代码]return[代码] [代码]await cloud.uploadFile({[代码][代码] [代码][代码]cloudPath: [代码][代码]'qrcode/openid/'[代码] [代码]+ event.userInfo.openId + [代码][代码]'.png'[代码][代码],[代码][代码] [代码][代码]fileContent: response.data[代码][代码] [代码][代码]});[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](err) {[代码][代码] [代码][代码]console.log([代码][代码]'>>>>>> ERROR:'[代码][代码], err)[代码][代码] [代码][代码]}[代码][代码]}[代码] 0基础初学者,弄的不对的地方,请各位大佬指出,以便我学习修正。谢谢!
2018-10-19