- 同样的代码,云函数中使用where语句查询数据,导出excel表中无数据,不使用where则有数据?
代码1:使用where查询 // 云函数入口文件 const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境 const xlsx = require('node-xlsx'); let db = cloud.database(); const comd = db.command; // 云函数入口函数 exports.main = async (event, context) => { try{ //let userdata = await db.collection('Data_cj').get(); let start_time = event.start; let end_time = event.end; let khbm = event.khbm; let userdata; if(khbm == ""){ userdata = await db.collection('Data_cj').where({ cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)) }).get(); }else{ userdata = await db.collection('Data_cj').where({ cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)), cj_khbm:khbm, }).get(); } console.log(userdata); //定义excel表格名 let dataCVS ='test.xlsx'; let alldata = []; //表属性 let row = ['客户姓名','客户编码','商品条码','商品包码','商品名称','单包零售价格','条装零售价格','市场批发价','订货电话','经营地址','盘点日期','当前库存量','断货天数']; alldata.push(row); console.log(alldata); for(let i=0;i<userdata.data.length;i++){ let arr =[]; let key="data"; arr.push(userdata[key][i].cj_khxm); arr.push(userdata[key][i].cj_khbm); arr.push(userdata[key][i].cj_tiaoma); arr.push(userdata[key][i].cj_baoma); arr.push(userdata[key][i].cj_spmc); arr.push(userdata[key][i].cj_dbjg); arr.push(userdata[key][i].cj_tzjg); arr.push(userdata[key][i].cj_pfjg); arr.push(userdata[key][i].cj_dhdh); arr.push(userdata[key][i].cj_jydz); arr.push(userdata[key][i].cj_pdrq); arr.push(userdata[key][i].cj_dqkc); arr.push(userdata[key][i].cj_dhts); alldata.push(arr); }; console.log(alldata); //把数据保存到excel let buffer = await xlsx.build([ { name:"test", data:alldata } ]); //把excel文件保存到云存储里 return await cloud.uploadFile({ cloudPath:dataCVS, fileContent:buffer,//excel二进制文件 }) }catch(e){ console.error(e); return e; } } 代码2:不使用where查询 // 云函数入口文件 const cloud = require('wx-server-sdk'); cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境 const xlsx = require('node-xlsx'); let db = cloud.database(); const comd = db.command; // 云函数入口函数 exports.main = async (event, context) => { try{ let userdata = await db.collection('Data_cj').get(); // let start_time = event.start; // let end_time = event.end; // let khbm = event.khbm; // let userdata; // if(khbm == ""){ // userdata = await db.collection('Data_cj').where({ // cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)) // }).get(); // }else{ // userdata = await db.collection('Data_cj').where({ // cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)), // cj_khbm:khbm, // }).get(); // } console.log(userdata); //定义excel表格名 let dataCVS ='test.xlsx'; let alldata = []; //表属性 let row = ['客户姓名','客户编码','商品条码','商品包码','商品名称','单包零售价格','条装零售价格','市场批发价','订货电话','经营地址','盘点日期','当前库存量','断货天数']; alldata.push(row); console.log(alldata); for(let i=0;i<userdata.data.length;i++){ let arr =[]; let key="data"; arr.push(userdata[key][i].cj_khxm); arr.push(userdata[key][i].cj_khbm); arr.push(userdata[key][i].cj_tiaoma); arr.push(userdata[key][i].cj_baoma); arr.push(userdata[key][i].cj_spmc); arr.push(userdata[key][i].cj_dbjg); arr.push(userdata[key][i].cj_tzjg); arr.push(userdata[key][i].cj_pfjg); arr.push(userdata[key][i].cj_dhdh); arr.push(userdata[key][i].cj_jydz); arr.push(userdata[key][i].cj_pdrq); arr.push(userdata[key][i].cj_dqkc); arr.push(userdata[key][i].cj_dhts); alldata.push(arr); }; console.log(alldata); //把数据保存到excel let buffer = await xlsx.build([ { name:"test", data:alldata } ]); //把excel文件保存到云存储里 return await cloud.uploadFile({ cloudPath:dataCVS, fileContent:buffer,//excel二进制文件 }) }catch(e){ console.error(e); return e; } } 不使用where查询则导出excel有数据: [图片] 使用where查询则导出excel无数据: [图片] 同样的查询条件,不知道为什么会这样,请各位大神协助,不胜感激!
2023-06-28 - 使用"node-xlsx"导出数据,worksheets.forEach报错?
[图片]程序跑到这里,就报错。TypeError: worksheets.forEach is not a function。本人刚接触微信小程序,实在找不到解决办法,恳求大佬帮助。 [图片] 云函数的环境配置没有问题。
2023-05-31