建议调用的时候在success里面打印res 返回结果,另外fail的返回结果也打印出来,基本上就知道有什么问题了,api的结果如果跟预期不一样,会有很多返回信息,从log里面得到更多的信息才好分析。
wx.getLocation在苹果7plus中获取不到坐标?微信小程序开发,使用wx.getLocation type :'gcj02' 获取不到坐标
2020-06-20你的代码里把 this.setData({ ['dataRushToBuy[' + i + '].countDown']: arrCountDown }) 这段放到for 循环外面,在for循环里计算好一个data,每个循环往 data 里放一个数据,data都可以直接用你现在的形式 data['dataRushToBuy[' + i + '].countDown'] = arrCountDown 然后在外面调用this.setData(data),就可以只调用一次setData
关于小程序setData的写法,如何减少setData次数?优化程序性能微信小程序,页面有个限时抢购,每个商品都有一个倒计时,实现的方法是有个setTimeOut每秒递减一次时间,具体代码如下: 问题:使用循环,假设有5个商品,每秒要setData五次,感觉这样写很不科学,应该不利于性能。所以,请教一下各位大哥有什么优化建议。 data: { //限时抢购内容 dataRushToBuy: [{ imageUrl: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591554165031&di=4929aa3cfa3ccf4758ad19be6255a6ab&imgtype=0&src=http%3A%2F%2Fimg3.99114.com%2Fgroup1%2FM00%2FF2%2F49%2FwKgGTFkUuLmAWgneAAMEPU7tIGM054.jpg', grade: 'A级', title: '现捞鲜活生蚝', subTitle: '新鲜正宗乳山大生蚝', tag: ['积分双倍', '不可用卷'], number: 8, price: '33.3', originalPrice: '66.9', endTime: '2020-07-28 03:00:11', countDown: [{ day: '22', hou: '23', min: '24', sec: '25' }] }, { imageUrl: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591554550828&di=2e9273fc79630404ccafc6abc5b28c67&imgtype=0&src=http%3A%2F%2F8481538.s21i-8.faiusr.com%2F2%2Fabuiabacgaag1-_8uwuo8m6dwjcobdjtaw.jpg', grade: 'A级', title: '上海青500g-800g', subTitle: '细腻爽滑,营养丰富,来自大自然的馈赠', tag: ['店长推荐'], number: 20, price: '3.3', originalPrice: '8.9', endTime: '2020-06-22 03:00:12', countDown: [{ day: '22', hou: '23', min: '24', sec: '25' }] }, { imageUrl: 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2840192109,2046781298&fm=26&gp=0.jpg', grade: 'B级', title: '越南进口龙利鱼柳无骨无刺巴沙鱼鱼片', subTitle: '细腻爽滑,营养丰富,来自大自然的馈赠', tag: ['积分双倍', '店长推荐'], number: 19, price: '63.3', originalPrice: '68.9', endTime: '2020-05-28 03:00:13', countDown: [{ day: '22', hou: '23', min: '24', sec: '25' }] }, { imageUrl: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1591630473933&di=7b12ab2422b79209d4d277628cd08f4d&imgtype=0&src=http%3A%2F%2Fm1.biz.itc.cn%2Fpic%2Fnew%2Fn%2F96%2F47%2FImg5864796_n.jpg', grade: 'A级', title: '神户牛肉', subTitle: '细腻爽滑,营养丰富,来自大自然的馈赠', tag: ['积分双倍'], number: 19, price: '363.3', originalPrice: '368.9', endTime: '2020-06-14 03:00:14', countDown: [{ day: '22', hou: '23', min: '24', sec: '25' }] }, { imageUrl: 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2102551933,267546245&fm=26&gp=0.jpg', grade: 'A级', title: '鲜活澳洲深水大龙虾500g-800g', subTitle: '细腻爽滑,营养丰富,来自大自然的馈赠', tag: ['店长推荐'], number: 20, price: '263.3', originalPrice: '268.9', endTime: '2020-06-16 03:00:15', countDown: [{ day: '22', hou: '23', min: '24', sec: '25' }] }] } //倒计时函数 funCountDown: function () { //获得数组 let arrList = this.data.dataRushToBuy; //获得当前时间 let nowTime = new Date().getTime(); //循环数组递减时间 for (var i = 0, len = arrList.length; i < len; i++) { //将结束时间转换为时间戳 let vEndTime = new Date(arrList[i].endTime).getTime(); //声明一个空数组 let arrCountDown = [] //如果结束时间-现在时间大于0则递减时间 if (vEndTime - nowTime > 0) { let time = (vEndTime - nowTime) / 1000; // 获取天、时、分、秒 let day = parseInt(time / (60 * 60 * 24)); let hou = parseInt(time % (60 * 60 * 24) / 3600); let min = parseInt(time % (60 * 60 * 24) % 3600 / 60); let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); //写入数组 arrCountDown = [{ day: day, hou: hou, min: min, sec: sec }] //如果结束时间-现在时间不大于0则全部写入为00 } else { arrCountDown = [{ day: '00', hou: '00', min: '00', sec: '00' }] } //渲染写入处理后的时间 this.setData({ ['dataRushToBuy[' + i + '].countDown']: arrCountDown }) } //每秒重复一次 setTimeout(this.funCountDown, 1000); }, //页面加载函数 onLoad() { this.funCountDown(); }
2020-06-20可以试一下最新的RC版本,修复了不少bug,好用一些了,最新的稳定版上好多快捷键都不工作了。。。我也是下午刚升级了RC版本,目前用着还行。
编辑器怎么不太好用?为什么编辑器升级之后越来越不好用了呢?感觉都有点想放弃他了,不能往好的方向发展吗?
2020-06-11同遇到这个问题,wxml中format 无效,其他文件中弹楼主的截图页面。
开发工具刚更新了稳定版,代码格式化快捷键失效?[图片]
2020-06-09简单解释一下原因,main函数可以接受两种返回值,直接return xxx(同步调用),或者return 一个Promise(异步调用)。 数据库请求默认是返回promise(异步),但也支持await同步,所以如果直接return的话需要await做同步,如果不想用await,可以用return new Promise((resolve,reject)=>{resolve(YOUR RESULT)})这种方式处理。 供参考
在云函数调用云数据库的api没有反应?// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const userInfo = db.collection('userInfo') // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() //通过openid查询是否存在用户 userInfo.where({ _openid: wxContext.OPENID }) .count().then(res =>{ if(res.total==0){ return true } else{ return false } }) } d 返回的result 一直是null
2020-06-06可以参考: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.push.html 直接push是可以的,不过你的需求设计建议再考虑一下,登录时间是个无限增长的属性,如果不断push可能会很快遇到用户登录次数太多,对内存和性能都会有影响,可以userInfo只存最近部分,另有一个表存所有的登录记录,感觉要好点
如何一次查询匹配并更新数据库数组?刚刚学电商小程序,想在用户登录后,把用户登录时间加入到数据库他的userInfo当中,看了数据库哪些命令,头很晕, 比如数据库中 userInfo集合中 每个用户记录的字段里面都有一个 timestamp:[ ]字段,它是一个数组,怎么写这个命令, 达到匹配并在这个数组并在里面push一个timestamp字符串? 如果我的思路不对,请做过电商的大神,告诉下,这个功能应该如何做才对,可能我的思路不好,以后还得改。谢先!
2020-06-05都是JS,数据库涉及SQL相关的,mongodb的基本概念和使用可以了解一下会更有帮助
学习小程序可以先学HTML、CSS、JavaScript,那么想学云开发应该学什么?学习小程序可以先学HTML、CSS、JavaScript。 云开发里面的数据库,储存,云函数对应的是什么语言?
2020-06-05可以先用unwind把数组拆开,然后用lookup分别查出title,再group一下
请教一下 云数据库 表中数组连接其他表 应该怎么写?我有两个表 服务表service 和 商品表goods 服务表字段:_id name goodsList 这里的goodsList是个数组 用于存放一条服务对应的多个商品 goodsList = [ {goodsId,number} ] 商品表字段:_id title 请问我应该怎么写,才能一次性获取 服务表信息,同时将goodsList里的goodsId 与 商品表goods 对应获取到呢? 我希望获取到的数据形式: service: { _id:, name:, goodsList:[{goodsId, goodsTitle, number}] }
2020-06-05同样出了这个问题
电脑调试没问题真机调试wx.previewImage报错?Uncaught (in promise) thirdScriptError Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method. TypeError: Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method. at eval (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:637683) at a (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:637833) at eval (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:1006853) at d (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:678898) at c (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:678582) at a (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:677165) at t (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:1006797) at Object.$i (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:1006919) at eval (eval at n.call.document (http://127.0.0.1:64664/remote-debug/runtime.js?devtools_ignore=true:1:1), <anonymous>:2:614131) at new Promise (<anonymous>)
2020-05-19感觉得上代码看,坐标设置正常么?是否在哪里设置了translate 之类的位移?
关于canvas绘制,部分x坐标错位怎么解决?在使用canvas绘制一个海报时,经常出现部分位置x坐标错位的情况,对比图如下: [图片] [图片] 左边的是正常效果的图,右边的是坐标错位后的结果,其中删除线部分的坐标貌似正常,海报的其他部分坐标也正常, 只有图中3处有问题,有遇到过类似问题的吗,请教是怎么解决的啊? 以下是部分代码 const ctx = uni.createCanvasContext('myCanvas') // 绘制背景图 ctx.drawImage('../../static/bg_good.jpg', 0, 0, 640, 948) ctx.save() ctx.drawImage('../../static/good.png',27,64,589,575) ctx.save() // 头像 ctx.arc(316,53,36,0,Math.PI*2,false) ctx.clip() ctx.drawImage('../../static/132.jpg',280,17,73,73) ctx.restore() ctx.beginPath() // 商品名称 ctx.font = 'bold 30px Arial' ctx.fillStyle = '#2A2A2A' ctx.fillText(item.goodName,27,690) // 商品价格 ctx.font = '45px Arial' ctx.fillStyle = '#FE1B00' const price = '¥'+item.price let metric1 = ctx.measureText(price) ctx.fillText(price,22,750) //商品原价 ctx.font = '35px Arial' ctx.fillStyle = '#6D6D6D' const origin = '¥'+'900' // 删除线 const x = 22+metric1.width+20 const metrics = ctx.measureText(origin) ctx.fillText(origin,x,750) ctx.moveTo(x,738) ctx.lineTo(x+metrics.width, 738); ctx.stroke(); // 商品备注 ctx.font = '18px Arial' ctx.fillStyle = '#999999' _this.drawText(ctx,item.introduction,27,760,400)// 自定义方法,文字换行显示 ctx.closePath() ctx.restore() // 小程序二维码 ctx.drawImage('../../static/good200.png',461,737,139,139) ctx.fillStyle = '#2A2A2A' ctx.setTextAlign('center') ctx.font = 'bold 18px/1 Arial ' ctx.fillText('-长按识别二维码购买-',530,905) ctx.draw(false,()=>{ uni.canvasToTempFilePath({ canvasId: 'myCanvas', x: 0, y: 0, width: 640, height: 948, success: (res) => { uni.hideLoading() var preview = [] preview.push(res.tempFilePath) uni.previewImage({ urls: preview, longPressActions: { itemList: ['发送给朋友', '保存图片', '收藏'], success: function(data) { console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片'); }, fail: function(err) { console.log(err.errMsg); } } }); } }) })
2020-04-25