之前有另一个云函数整理数据库的文件,已打印验证之前那个云函数没问题,大概1300行10列左右的数据
现在这个excel云函数用来读然后存到excel里,
之后要上传到云存储
问题就是出现在excel云函数读完数据存不下来,
但不知道是数
报错:
11/08 23:00:07:821
[excel][1]
ERROR RequestId: b5df872c-7e96-43f3-8b15-30a6078d380f Result: TypeError: Cannot read property '0' of undefined
at exports.main (/var/user/index.js:39:49)
at IncomingMessage.<anonymous> (/data/scf/frame/node12/runtime.js:246:26)
at IncomingMessage.emit (events.js:323:22)
at endReadableNT (_stream_readable.js:1204:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
excel云函数代码:
// 云函数入口文件
const cloud = require('wx-server-sdk')
const moment = require("moment-timezone")
cloud.init({
traceUser: true,
env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
//操作excel用的类库
const xlsx = require('xlsx');
// 云函数入口函数
exports.main = async(event, context) => {
let {userdata} = event
// javascript date
// console.log(new Date()); // 2021-03-16T08:04:07.441Z (UTC+0
// console.log(moment().tz("Asia/Shanghai").format()); // 2021-03-16T16:04:07+08:00 (UTC+8)
let curDate = moment().tz("Asia/Shanghai").format('YYYYMMDDHHmmss');
//let curDate =new Date().toISOString()
//1,定义excel表格名
let dataCVS = 'xiaofu101_order_list_'+curDate+'.xlsx'
//2,定义存储数据的
let alldata = [];
//let row = ['status','receiver']; //表属性
let row=['_id' , 'orderDate', 'region','address','receiver','phone'
,'SchoolName','cloth_id','cloth_notes','num','cloth_price','totalPrice','status']
alldata.push(row);
console.log('excel before loop:'+alldata)
let count = 0
for (let key in userdata) {
for (let i in userdata[key]['product']){
let arr = [];
arr.push(userdata[key]._id);
arr.push(userdata[key].orderDate);
arr.push(userdata[key]['address'].region[0]+'-'
+userdata[key]['address'].region[1]+'-'
+userdata[key]['address'].region[2]);
arr.push(userdata[key]['address'].address);
arr.push(userdata[key]['address'].receiver);
arr.push(userdata[key]['address'].phone);
arr.push(userdata[key].curSchoolName);
arr.push(userdata[key]['product'][i].cloth_id);
arr.push(userdata[key]['product'][i].cloth_notes);
arr.push(userdata[key]['product'][i].cloth_price);
arr.push(userdata[key]['product'][i].num);
arr.push(userdata[key].totalPrice);
arr.push(userdata[key].status);
alldata.push(arr)
}
count += 1
console.log(count)
}
console.log('excel has data:'+alldata)
//3,把数据保存到excel里
const buffer = xlsx.utils.book_new();
const worksheet = xlsx.utils.aoa_to_sheet(alldata);
xlsx.utils.book_append_sheet(buffer, worksheet, 'mySheetName');
const excelBuffer = xlsx.write(buffer, { type: 'buffer' });
console.log('buffer has data : ', excelBuffer);
//4,把excel文件保存到云存储里
console.log(dataCVS)
return await cloud.uploadFile({
cloudPath: dataCVS,
fileContent: excelBuffer, //excel二进制文件
})
}
这条语句没有执行打印出来,
console.log('excel has data:'+alldata)
console.log(count)打印出来了
说明错可能是在上面 alldata.push(arr)
但不知道是保存的数据类型造成的property '0' of undefined还是怎么回事,
请问怎么同时调式2个云函数,现在只能调式1个excel云函数,不能模拟传数据库数据的情况
你好。我也这个问题。
我是做了要给扫码程序,识别二维码信息,添加备注和照片,然后上传。
最终进行导出。导出无法导出。无法生产excel。
undefined的错误。JS程序员第一个应该学会排查的问题类型。
xxx.yyy,说明xxx的值是undefined,打印一下。