腾讯云微搭低代码 批量查询全部数据

这篇说说腾讯云微搭低代码平台中,通过JavaScript代码批量导出数据模型全量数据为CSV文件的方法,核心是分页查询并拼接导出。 分页查询:循环每1000条数据调用接口获取全部记录。 数据拼接:将字段值按CSV格式拼接,处理逗号与编码问题。 导出触发:创建a标签并模拟点击实现文件下载。

相关产品
腾讯云微搭低代码 产品页,含版本规格、价格与购买入口。

一、对数据模型中的数据进行增删改查

参考文档:数据模型的 CRUD 方法说明及代码示例。

二、批量导出列表的全部数据

解决方案:
一般情况下微搭会提供导出按钮支持当前页面数据的批量导出,但是要批量导出列表的全量数据时就必须通过低代码方式实现。(这种用 JS 实现导出的方案还有很多种开源方案,用户也可以自行查找解决方案替换)。

实战代码:

export default async function({event, data}) { //查询条件 //const conditions = [{ key:"fkyqm",rel:"eq",val:event.detail.fkyqm },{ key:"mzt",rel:"eq",val:"2" }]; const result1 = await app.cloud.callDataSource( { dataSourceName: 'sys_user', // 数据表名 methodName: 'wedaGetRecords', // 查询方法(多条数据列表) params:{ //添加条件 //where:conditions, }, }); /** 1、查出总数 **/ var total = result1.total; // 要导出的json数据 const jsonData = []; /** 2、每1000条取一次数据 **/ for(var i = 1 ; i-1 < total/1000 ; i++){ const result2 = await app.cloud.callDataSource( { dataSourceName: 'sys_user', // 数据表名 methodName: 'wedaGetRecords', // 查询方法(多条数据列表) params:{ pageNo:i, pageSize:1000, //添加条件 //where:conditions, }, }); //数组拼接 jsonData.push.apply(jsonData,result2.records); } /** 3、拼接导出文件数据 **/ // 列标题,逗号隔开,每一个逗号就是隔开一个单元格 let str = `列表标题A,列表标题B,列表标题C,列表标题D\\n`; // 循环取值 for(let i = 0 ; i < jsonData.length ; i++ ){ //这里可以根据业务字段取值,增加""为区分字符串中的逗号,增加\\t为了不让表格显示科学计数法或者其他格式 for(const key in jsonData[i]){ str+=`"${jsonData[i][key] + '"\\t'},`; } str+='\\n'; //可以根据列内容选择对应的key //str+=`"${jsonData[i]['xm'] + '"\\t'},`; //str+=`"${jsonData[i]['nl'] + '"\\t'},`; //str+='\\n'; } // encodeURIComponent解决中文乱码 const uri = 'data:text/csv;charset=utf-8,\\ufeff' + encodeURIComponent(str); /** 4、导出链接设置 **/ // 通过创建a标签实现 const link = document.createElement("a"); link.href = uri; // 对下载的文件命名 link.download = "json数据表.csv"; link.click();}

赞 (0)
上一篇 4天前
下一篇 4天前