- 云函数中嵌套for循环使用await失败,为什么?
exports.main = async (event, context) => { try { if (event.arr1 != null) { const wb = new xl.Workbook() const ws = wb.addWorksheet('列表') let StuInfo1 = []; StuInfo1 = JSON.parse(event.arr1) ws.cell(1, 1).string("上报人员") ws.cell(1, 2).string("上报原因") ws.cell(1, 3).string("上报时间") ws.cell(1, 4).string("上报图片") ws.cell(1, 5).string("1") ws.cell(1, 6).string("2") ws.cell(1, 7).string("3") let lg = 0 lg = StuInfo1.length const fileid = 'cloud://cloud1-1graz7ji9c39ec6b.636c-cloud1-1graz7ji9c39ec6b-1316894358/.png'//这里为了测试先在云存储里找了个地址,后期会改为动态的 for (let key = 0; key < lg; key++) { ws.cell(key + 2, 1).string(StuInfo1[key].applicant) ws.cell(key + 2, 2).string(StuInfo1[key].reason) ws.cell(key + 2, 3).string(StuInfo1[key].date) ws.cell(key + 2, 4).string(StuInfo1[key].images.length + "张") ws.row(key + 2).setHeight(65) let lg1 = 0 lg1 = StuInfo1[key].images.length let res = await cloud.downloadFile({ fileID: fileid }) let image = res.fileContent ws.addImage({ image: image, type: 'picture', position: { type: 'twoCellAnchor', from: { col: 5, colOff: 0, row: key + 2, rowOff: 0, }, to: { col: 6, colOff: 0, row: key + 3, rowOff: 0, }, }, }) //getImages(StuInfo1[key].images, key, ws) // getImages(StuInfo1[key].images, key, ws).then(res => { // ws = res // }) } const buffer = await wb.writeToBuffer() return await cloud.uploadFile({ cloudPath: 'export/patrolExport22.xlsx', fileContent: buffer, //excel二进制文件 }) } } catch (error) { console.error(error) } } 上面是单层for循环使用await,可以正常将图片写入表格, 下面是双层嵌套for循环使用await,图片写入表格失败,只能写入文字。 exports.main = async (event, context) => { try { if (event.arr1 != null) { const wb = new xl.Workbook() const ws = wb.addWorksheet('列表') let StuInfo1 = []; StuInfo1 = JSON.parse(event.arr1) ws.cell(1, 1).string("上报人员") ws.cell(1, 2).string("上报原因") ws.cell(1, 3).string("上报时间") ws.cell(1, 4).string("上报图片") ws.cell(1, 5).string("1") ws.cell(1, 6).string("2") ws.cell(1, 7).string("3") let lg = 0 lg = StuInfo1.length const fileid = 'cloud://cloud1-1graz7ji9c39ec6b.636c-cloud1-1graz7ji9c39ec6b-1316894358/.png'//这里为了测试先在云存储里找了个地址,后期会改为动态的 for (let key = 0; key < lg; key++) { ws.cell(key + 2, 1).string(StuInfo1[key].applicant) ws.cell(key + 2, 2).string(StuInfo1[key].reason) ws.cell(key + 2, 3).string(StuInfo1[key].date) ws.cell(key + 2, 4).string(StuInfo1[key].images.length + "张") ws.row(key + 2).setHeight(65) let lg1 = 0 lg1 = StuInfo1[key].images.length //下面写入图片失败,为什么? for (let index = 0; index < lg1; index++) { let res = await cloud.downloadFile({ fileID: fileid }) let image = res.fileContent ws.addImage({ image: image, type: 'picture', position: { type: 'twoCellAnchor', from: { col:index+5, colOff: 0, row: key + 2, rowOff: 0, }, to: { col: index+6, colOff: 0, row: key + 3, rowOff: 0, }, }, }) } //getImages(StuInfo1[key].images, key, ws) // getImages(StuInfo1[key].images, key, ws).then(res => { // ws = res // }) } const buffer = await wb.writeToBuffer() return await cloud.uploadFile({ cloudPath: 'export/patrolExport22.xlsx', fileContent: buffer, //excel二进制文件 }) } } catch (error) { console.error(error) } } 请教各位大佬,应该怎么改正?谢谢了...
2023-05-30 - 云函数获取多维数组中的元素长度失败,小程序端可以正常获取,为什么?
let that = this console.log(that.data.partroledList[0].patrol.patrolItems.length) 上面是小程序端调用多维数组,能正常获取长度 下面是云函数端获取多维数组中的数组获取长度失败 try { let StuInfo=[]; StuInfo = JSON.parse(event.arr)//将获取到的数据对象赋值给变量,接下来需要用该对象向Excel表中添加数据 let dataCVS = `studentInfo-${Math.floor(Math.random()*1000000000)}.xlsx` console.log(dataCVS) //声明一个Excel表,表的名字用随机数产生 let alldata = []; let row = ['风险点', '风险名称', '巡查项', '1', '2', '3', '4', '5', '6', '7', '8', '9','10','11', '12', '13', '14', '15', '16', '17', '18', '19','20']; //表格的属性,也就是表头说明对象 alldata.push(row); //将此行数据添加到一个向表格中存数据的数组中 //接下来是通过循环将数据存到向表格中存数据的数组中 let temp=[]; for (let key = 0; key < StuInfo.length; key++) { let arr = []; //temp.push(StuInfo[key].patrol.patrolItems[0]); arr.push(StuInfo[key].patrol.riskPoints); arr.push(StuInfo[key].patrol.riskName); arr.push(StuInfo[key].patrol.patrolItems.length);//这里获取不到长度,云函数端拿不到 // for (let index = 0; index < (temp.length; index++) { // arr.push(StuInfo[key][0][1][index]) // } alldata.push(arr) } var buffer = await xlsx.build([{ name: "mySheetName", data: alldata }]); //将表格存入到存储库中并返回文件ID return await cloud.uploadFile({ cloudPath: dataCVS, fileContent: buffer, //excel二进制文件 }) } catch (error) { console.error(error) }
2023-05-26 - 微信小程序云开发如何保证添加数据时不重复?
我想给云数据库中的某个集合的每个记录添加一个字段,但是要求每个记录的那个字段值要保证不会相同,因为有可能会存在多个用户同时操作,应该怎么实现。有点类似给数据上锁的意思
2023-05-18 - 小程序云端函数 where遇到的问题?
db.collection(name).where( { theme: mytext } ).get() 上面的mytext是函数传的参数,string 类型 值是‘山水’ ,获取不到数据 db.collection(name).where( { theme: ‘山水’ } ).get() 上面直接用字面量 ‘山水’就可以获得数据 这是为什么呢?如何解决!
2023-03-23