批量查询全部数据

最近更新时间:2024-12-27 15:52:12

我的收藏

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

批量导出列表的全部数据

解决方案: 一般情况下微搭会提供导出按钮支持当前页面数据的批量导出,但是要批量导出列表的全量数据时就必须通过低代码方式实现。(这种用 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();
}