- if条件满足时为什么会不执行呢?
[图片] tbodyfind是undefined时却不执行,也不执行else,这是啥情况?
2022-04-28 - 用云函数将excel文件导入数据库,在数据量大时会出现数据丢失的现象?
遇到了好几个问题: 用云函数将excel文件导入数据库,数据量小的时候没有问题,在数据量大的时候,测试1000条的时候偶尔会出现数据丢失的现象。小程序端在导入时会有一个弹窗提示正在解析,数据量小的时候在导入完成后可以正确地弹出“导入完成”,但数据量大的时候(1000条)就无法弹出,应该怎么解决?怎么才能在导入前先清除集合的所有数据?想先清除所有数据之后再进行导入。怎么才能将导入的excel的第一行作为所有导入数据库的数据的字段名?另外想问一下有没有更好的excel数据导入到云数据库的方式麻烦了!感谢! //云函数 const cloud = require('wx-server-sdk') cloud.init() var xlsx = require('node-xlsx'); const db = cloud.database() exports.main = async(event, context) => { //0,删除现有数据 var aaa =await db.collection('tice').where({ _id: db.command.exists(true)}).remove() //1,通过fileID下载云存储里的excel文件 let { fileID } = event const res = await cloud.downloadFile({ fileID: fileID, }) const buffer = res.fileContent const tasks = [] //2,解析excel文件里的数据 var sheets = xlsx.parse(buffer); sheets.forEach(function(sheet) { console.log(sheet['name']); for (var rowId in sheet['data']) { console.log(rowId); var row = sheet['data'][rowId]; if (rowId > 0 && row) { //3,把解析到的数据存到excelList数据表里 const promise = db.collection('tice') .add({ data: { "学籍号":row[0], "身份证号":row[1], "姓名":row[2], } }) tasks.push(promise) } } }); // 等待所有数据添加完成 let result = await Promise.all(tasks).then(res => { return res }).catch(function(err) { return err }) return result } //小程序端 //onTap1是上传文件 onTap1: function(){ wx.showLoading({ title: '上传中', }) let that = this; wx.chooseMessageFile({ count: 1, type: 'all', success(res) { that.uploadFile(res.tempFiles[0]['path']) } }) }, uploadFile: function(path){ let ordernum = this.generate(); let that = this; wx.cloud.uploadFile({ cloudPath: 'tice/'+ordernum+'.xlsx', filePath: path, }).then(res => { that.setData({ file: res.fileID },()=>{ wx.hideLoading() }) }).catch(error => { }) }, readFile: function(fileID) { wx.showLoading({ title: '解析中', }) let that = this; wx.cloud.callFunction({ name: 'scores', data: { fileID }, success: res => { wx.hideLoading() wx.showToast({ title: '导入成功', icon: 'success', duration: 2000 }) } }) }, //onTap2是导入数据 onTap2: function(){ let file =this.data.file; this.readFile(file) },
2022-04-18