- 请问一个云函数被另一个云函数调用时,如何在这个云函数获取到openid?
我发现当一个云函数A不是由小程序端直接调用,而是在云端中被另一个云函数B调用时,这个云函数A中的 event.userInfo 和 cloud.getWXContent() 无法直接获取到 openid , 请问除了传参的方式,有什么办法可以直接在 A 中获取到 openid 吗?
2022-03-10 - 小程序数据库批量add添加数据
- 需要在云函数中往某个集合添加多条数据,只能用for来add不但很慢而且会报错 - 能够批量add的办法
2019-05-25 - 201 商户订单号重复 问题解决
我们在做支付时,如果第一次吊起支付,用户没有支付,下次再进入订单列表重新支付时,就会报这个错误。 201 商户订单号重复 [图片] 解决办法呢,就是每次支付的时候,不管是新下单支付,还是第一次没有支付成功,再次吊起支付,我们都做一个随机的处理,就是每一次提交的outTradeNo都不一样。 pay云函数 [代码]// 云函数代码 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { let orderId = event.outTradeNo.substring(0, 15) + new Date().getTime() await cloud.database().collection('mh-dingdan') .doc(event.outTradeNo) .update({ data: { orderId: orderId } }) const res = await cloud.cloudPay.unifiedOrder({ "body": event.goodName, //商品名称或商品描述 "outTradeNo": orderId, //订单号 "spbillCreateIp": "127.0.0.1", "subMchId": "1615986178", //****** 微信支付商户号 "totalFee": event.totalFee * 100, //支付的金额,单位分 "envId": "cloud1-3g5spw8wbb2af38f", "functionName": "payCallBack" //支付成功的回调 }) return res } [代码] 对应的payCallBack云函数做定当状态更新 [代码]// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 云函数入口函数 exports.main = async (event, context) => { //订单号 event.outTradeNo return await cloud.database().collection('mh-dingdan') .where({ orderId: event.outTradeNo }) .update({ data: { status: 1 } }).then(res => { return { errcode: 0, errmsg: '支付成功' } }).catch(res => { return res }) } [代码]
2022-03-20 - cover-view文本被截断
- 当前 Bug 的表现(可附上截图)[图片] - 预期表现:cover-view文本跟view表现一样,不会被截断
2018-11-29 - map地图报错ret is not defined
[图片] 固定数据循环处理就可以渲染出来,接口请求的数据,循环处理,就报错
2019-01-03 - 线上项目为什么偶尔报出以下错误?请官方补充文档。
APPID wxbc54fc3f6ae161c9 request:fail -7:net::ERR_TIMED_OUT(超时 411) request:fail -101:net::ERR_CONNECTION_RESET(连接重置 298) request:fail -103:net::ERR_CONNECTION_ABORTED(连接已中止 788) request:fail -105:net::ERR_NAME_NOT_RESOLVED(名称未解析 547) request:fail -109:net::ERR_ADDRESS_UNREACHABLE(地址无法到达 491) request:fail -118:net::ERR_CONNECTION_TIMED_OUT(连接超时 919)
2020-07-24 - map地图缩放拖动限制无效
map地图的enableZoom: false,enableScroll: false,无论直接设置map的属性还是通过setting的setdata设置,均无法生效,仍然可以拖动和缩放,安卓真机测试也是
2020-02-17 - 直播页面 getCurrentPages 取到的是 null ?
[图片] 这个 null 就是这样设计的吗? 这样导致好多 currentPage.xxx 这种写法,都需要先判断一下 currentPage 是否存在
2020-05-27 - 小程序util.js组件函数库
const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n } /** * 时间戳转化为年 月 日 时 分 秒 * number: 传入时间戳 * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 */ function dateFormat(number,format) { var number = number.toString().substr(0,10); var formateArr = ['Y', 'M', 'D', 'h', 'm', 's']; var returnArr = []; var date = new Date(number * 1000); returnArr.push(date.getFullYear()); returnArr.push(formatNumber(date.getMonth() + 1)); returnArr.push(formatNumber(date.getDate())); returnArr.push(formatNumber(date.getHours())); returnArr.push(formatNumber(date.getMinutes())); returnArr.push(formatNumber(date.getSeconds())); for (var i in returnArr) { format = format.replace(formateArr[i], returnArr[i]); } return format; } //自动判断类型并判断类型是否为空 function isNull(value) { if (value == null || value == undefined) return true if (this.isString(value)) { if (value.trim().length == 0) return true } else if (this.isArray(value)) { if (value.length == 0) return true } else if (this.isObject(value)) { for (let name in value) return false return true } return false; } //判断字符串是否空 function isString(value) { return value != null && value != undefined && value.constructor == String } //判断数组是否空 function isArray(value) { return value != null && value != undefined && value.constructor == Array } //判断对象是否空 function isObject(value) { return value != null && value != undefined && value.constructor == Object } //精确的乘法结果 function accMul(arg1, arg2) { var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m) } //统计长度和数量 function count(obj) { var objType = typeof obj; if (objType == "string") { return obj.length; } else if (objType == "object") { var objLen = 0; for (var i in obj) { objLen++; } return objLen; } return false; } //删除空数组 function clearArray(array) { for (var i = 0; i < array.length; i++) { if (array[i] == "" || typeof (array[i]) == "undefined") { array.splice(i, 1); i = i - 1; } } return array; } //get参数转换数组 function strToArray(str) { var arr = str.split('&'); var newArray = new Object(); for (let i in arr) { var kye = arr[i].split("=")[0] var value = arr[i].split("=")[1] newArray[kye] = value } return newArray; } /** * 判断是否有某个值 */ function inArray(arr, value) { if (arr.indexOf && typeof (arr.indexOf) == 'function') { var index = arr.indexOf(value); if (index >= 0) { return true; } } return false; } //去除字符串左右两端的空格 function trim(str) { var str = str.toString(); return str.replace(/(^\s*)|(\s*$)/g, ""); } //随机数 function getRandom(min) { var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var nums = ""; for (var i = 0;i < min; i++) { var id = parseInt(Math.random() * 61); nums += chars[id]; } return nums.toUpperCase(); } //腾讯地图 function baidutotencent(lng, lat) { let x_pi = 3.14159265358979324 * 3000.0 / 180.0; let x = lng - 0.0065; let y = lat - 0.006; let z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); let theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); let lngs = z * Math.cos(theta); let lats = z * Math.sin(theta); return { longitude:lngs, latitude:lats }; } //腾讯地图多数据 function bdtotx(lng_lat) { var data = []; for (let index = 0; index < lng_lat.length; index++) { var result = baidutotencent(lng_lat[index].longitude,lng_lat[index].latitude); data[index] = lng_lat[index]; data[index]['iconPath'] = "/img/hot.png"; data[index]['width'] = 40; data[index]['height'] = 41; data[index]['longitude'] = result.longitude; data[index]['latitude'] = result.latitude; data[index]['callout'] = { content:"名称:"+lng_lat[index].title+"\r\n"+"地址:"+lng_lat[index].address, bgColor:"#fff",padding:"5px",borderRadius:"5px",borderWidth:"1px",borderColor:"#07c160", } } return data; } //随机数 module.exports = { formatTime: formatTime, isNull: isNull, isString: isString, isArray: isArray, isObject: isObject, count: count, accMul: accMul, clearArray: clearArray, strToArray: strToArray, inArray: inArray, trim: trim, getRandom: getRandom, dateFormat: dateFormat, baidutotencent:baidutotencent, bdtotx:bdtotx }
2020-05-27 - 叠式轮播图
开发工具和iOS测过,android我没测过。。哈哈哈哈哈 https://developers.weixin.qq.com/s/kh8HhjmA7A4D 注释不知道写啥,简单描述了下 [图片]
2018-11-30