云函数是将云存储的excel文件下载下来,通过解析excel文件,再将其存入云数据库里,实际上云函数是调用了,但是云数据库并没有添加数据
const cloud = require('wx-server-sdk')
cloud.init()
var xlsx = require('node-xlsx');
const db = cloud.database()
exports.main = async (event, context) => {
let {
fileID
} = event
//1,通过fileID下载云存储里的excel文件
const res = await cloud.downloadFile({
fileID: fileID,
})
const buffer = res.fileContent
const tasks = [] //用来存储所有的添加数据操作
//2,解析excel文件里的数据
var sheet1 = xlsx.parse(buffer); //获取到所有sheets
sheets.forEach(function (sheet1) {
console.log(sheet1['name']);
for (var rowId in sheet1['data']) {
console.log(rowId);
var row = sheet1['data'][rowId]; //第几行数据
if (rowId > 0 && row) { //第一行是表格标题,从第2行开始读
//3,把解析到的数据存到excelList数据表里
const promise = db.collection('users')
.add({
data: {
name: row[0], //姓名
age: row[1], //年龄
address: row[2], //地址
wechat: row[3] //wechat
}
})
tasks.push(promise)
}
}
});
// 等待所有数据添加完成
let result = await Promise.all(tasks).then(res => {
return res
}).catch(function (err) {
return err
})
return result
}
我也遇到云函数调用成功但是并没有执行的问题,题主最后解决问题了吗
我也遇到相同问题,感觉小程序的云函数不靠谱
初看代码没发现问题,你得调试一下。打开云开发控制台-云函数-日志,看看是不是执行了,报了些什么错误,再不行,一步一步console.log
环境对了没有,试试这样:
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })