你这样写只能更新对象,官方并没有给出可以更改具体数组元素的api
command怎么更新数组- 需求的场景描述(希望解决的问题) 记录中一个字段为数组形式,我需要更新时在这个数组中删除某一个元素怎么操作? 请问下面的代码正确吗?还是说要取出值后再更新进去? [代码]let db = cloud.database();[代码][代码]let _ = db.command;[代码][代码]await db.collection([代码][代码]'users'[代码][代码]).doc(e.userInfo.openId).update({[代码][代码] [代码][代码]_gis:_.remove(e._gid)[代码][代码]})[代码]- 希望提供的能力 教程中没有相关介绍,希望得到解答正确的操作。
2018-10-16你的问题是这样的,async只能修饰主函数,并不能修饰回调函数 ,你下面每一次使用await的时候都是对回调函数而言的,但是你没有对回调函数进行async声明导致编译器不能识别await 你可以这样写 async res=>{ await } 这样就可以调用了
多表更新怎么写?为什么会报错- 需求的场景描述(希望解决的问题) 发布产品时需要消耗个人积分,所以需要在个人表中更新,扣除积分成功才会在清单表中记录,否则删除刚才的产品发布记录 [代码]let $result = {[代码][代码] [代码][代码]bool: [代码][代码]false[代码][代码],[代码][代码] [代码][代码]message: [代码][代码]'提交失败!'[代码][代码]};[代码] [代码]try[代码][代码]{[代码][代码] [代码][代码]await db.collection([代码][代码]'Goods'[代码][代码]).add({[代码][代码] [代码][代码]data: e.iData[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]await db.collection([代码][代码]'Users'[代码][代码]).doc(id).update({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]_goods: _.unshift(res._id),[代码][代码] [代码][代码]_scores: _.inc(-$cost)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]await db.collection([代码][代码]'Score'[代码][代码]).doc(id).update({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]_history: _.unshift({[代码][代码] [代码][代码]_type: [代码][代码]'支出'[代码][代码],[代码][代码] [代码][代码]_scores: -$cost,[代码][代码] [代码][代码]_date: db.serverDate()[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}).then(res => {[代码][代码] [代码][代码]$result.bool = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]$result.message = [代码][代码]'提交成功!'[代码][代码];[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}).[代码][代码]catch[代码][代码](err => {[代码][代码] [代码][代码]await db.collection([代码][代码]'Goods'[代码][代码]).doc(res._id).remove();[代码][代码] [代码][代码]})[代码][代码] [代码][代码]});[代码][代码]}[代码][代码]catch[代码][代码](err){[代码][代码] [代码][代码]console.log(err);[代码][代码]}finally{[代码][代码] [代码][代码]return[代码] [代码]$result;[代码][代码]}[代码] - 希望提供的能力 怎么样写才不会报错?
2018-10-15在官方给的测试demo里最后使用的是临时文件路径构造的全局变量来进行的图片预览,而没有使用res.fileId来进行展示,不知道是不是也是这个原因
小程序端调用wx.cloud.uploadfile bug- 当前 Bug 的表现(可附上截图) 在小程序端调用相同路径进行覆盖写时,并未进行覆盖写,而是使用之前写入的文件 - 预期表现 正常情况下 按照官网提供api,对相同路径进行上传,则会进行覆盖写操作,比如对于图片内容,应当是将流数据从文件开头进行写入,现在猜测的情况可能是对同一路径上传的时候生成了一个文件副本而错误的将文件指向了原文件,具体情况不知 - 复现路径 [代码]function[代码] [代码]ui(){[代码][代码] [代码][代码]return[代码] [代码]new[代码] [代码]Promise([代码][代码]function[代码][代码](resolve,reject){[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < dbarr.length; i++) {[代码][代码] [代码][代码]const db = wx.cloud.database();[代码][代码] [代码][代码]var[代码] [代码]filePath = dbarr[i];[代码][代码] [代码][代码]var[代码] [代码]cloudPath = [代码][代码]'userimg/'[代码][代码]+bn.data.userid+[代码][代码]'/img'[代码][代码]+i+ [代码][代码]'.png'[代码][代码];[代码][代码]//这里是测试片段[代码][代码] [代码][代码]wx.cloud.uploadFile({[代码][代码] [代码][代码]cloudPath,[代码][代码] [代码][代码]filePath,[代码][代码] [代码][代码]success: res => {[代码][代码] [代码][代码]var[代码] [代码]h = res.fileID;[代码][代码] [代码][代码]update.push(h);[代码][代码] [代码][代码]// console.log('[上传文件] 成功:', res);[代码][代码] [代码][代码]if[代码][代码](update.length==dbarr.length){[代码][代码] [代码][代码]resolve(1);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: e => {[代码][代码] [代码][代码]console.error([代码][代码]'[上传文件] 失败:'[代码][代码], e)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]icon: [代码][代码]'none'[代码][代码],[代码][代码] [代码][代码]title: [代码][代码]'上传失败'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]complete: () => {[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]});[代码][代码]function[代码] [代码]ui(){[代码][代码] [代码][代码]return[代码] [代码]new[代码] [代码]Promise([代码][代码]function[代码][代码](resolve,reject){[代码][代码] [代码][代码]for[代码] [代码]([代码][代码]var[代码] [代码]i = 0; i < dbarr.length; i++) {[代码][代码] [代码][代码]const db = wx.cloud.database();[代码][代码] [代码][代码]var[代码] [代码]filePath = dbarr[i];[代码][代码] [代码][代码]var[代码] [代码]cloudPath = [代码][代码]'userimg/'[代码][代码]+bn.data.userid+[代码][代码]'/img'[代码][代码]+i+2+ [代码][代码]'.png'[代码][代码]; [代码][代码]//这里是测试片段[代码][代码] [代码][代码]wx.cloud.uploadFile({[代码][代码] [代码][代码]cloudPath,[代码][代码] [代码][代码]filePath,[代码][代码] [代码][代码]success: res => {[代码][代码] [代码][代码]var[代码] [代码]h = res.fileID;[代码][代码] [代码][代码]update.push(h);[代码][代码] [代码][代码]// console.log('[上传文件] 成功:', res);[代码][代码] [代码][代码]if[代码][代码](update.length==dbarr.length){[代码][代码] [代码][代码]resolve(1);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: e => {[代码][代码] [代码][代码]console.error([代码][代码]'[上传文件] 失败:'[代码][代码], e)[代码][代码] [代码][代码]wx.showToast({[代码][代码] [代码][代码]icon: [代码][代码]'none'[代码][代码],[代码][代码] [代码][代码]title: [代码][代码]'上传失败'[代码][代码],[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]complete: () => {[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]})[代码]- 提供一个最简复现 Demo 可以将以上函数直接调用
2018-10-11