m0_50180798 2020-10-22 15:01 采纳率: 0%
浏览 44

Koa2用excel-export模块导出mongodb文档,第一次发送请求正常导出xlsx格式,第二次提示无法连接mongodb,有谁遇到过类似的原因吗

class DownloadCTl {
async outputeExcel(ctx){
//引入模块
const {User} = require('../models/users')
const userlist = await User.find()
const nodeExcel= require('excel-export')

    const {fields = ""} = ctx.query;
    const OutputFields = fields.split(';')
    //构建导出结构
    let conf = {};
    conf.cols = [];
    const cols = ['名字','部门','性别','id','编码'];
    for(let item of cols){
            let tits = {};
            tits.caption = item;
            tits.type = 'string';
            conf.cols.push(tits);
    }
    const alldata = [];
    const tows = ['username','department','station','_id','gender'];
    for(let i in userlist){
        let row = [];
        for(let j of tows){
            let o = {};
            o[i] = userlist[i][j];
            row.push(o[i])
        }
        alldata.push(row)
    }
    conf.rows = alldata
    //将所有数据写入nodeExcel中
    var result = nodeExcel.execute(conf);
    //设置响应头
    //设置下载文件命名 支持的excel文件类有.xlsx .xls .xlsm .xltx .xltm .xlsb .xlam等
    ctx.set('Content-Type', 'application/vnd.openxmlformats');
    ctx.set("Content-Disposition", "attachment; filename=" + "Report.xlsx");
    let data = new Buffer.from(result,'binary');
    //Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from()
    ctx.body = data

}

}
module.exports = new DownloadCTl()

这个是注册路由的部分

const router = require('koa-router')()
const {outputeExcel} = require('../controllers/downloads')

router.prefix('/exportexcel')

router.get('/',outputeExcel);

module.exports = router

不知道为什么引用excel-expoprt这个模块那么麻烦,我放在类之外或者方法外面都是导致连接不上mongodb, const nodeExcel= require('excel-export')

然后最主要的问题是上面的可以正常运行第一次图片说明

格式和内容都是正确无误的
图片说明

然后再一次申请就提示无法连接到mongodb了图片说明

导出的文件也变成了json,并且是不含信息的,也是提示连接不上mongodb图片说明

问的同学好像说是生命周期结束了也没太明白
有没网友有遇到过类似的问题


  • 写回答

1条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 如何在list中给排名参数rank赋值
      • ¥20 要一个狼人杀游戏的代码(原创,不可抄袭),可以在DEV-C++上运行,如要等待就用for循环,要酷炫一些
      • ¥15 c4d有类似blender实例的功能么
      • ¥15 关于mysql的提问请大家解答
      • ¥30 将DICOM批量转化成PNG格式报错
      • ¥15 matlab lsqcurvefit拟合出现Function value and YDATA sizes are not equal.报错
      • ¥15 SpringBoot项目启动报错:No active profile set, falling back to default profiles:default,如何解决?
      • ¥15 部署confluence设置数据库这个步骤时,提示必须配置utf8 作为默认字符集
      • ¥15 如何脱离Photoshop实现ps脚本的渲染
      • ¥15 丙类高频放大器匹配网络