最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Excel文件未在Noe JS中下载

运维笔记admin12浏览0评论

Excel文件未在Noe JS中下载

Excel文件未在Noe JS中下载

我无法从前端(角度4)发送API的Nodejs中下载excel文件。有人可以在这里帮我吗?我要附加在节点js后端中使用的图片和源代码。

Error Screen Shot

app.controllers.getExcel =函数(req,res){

    console.log("------------------------------CHECK===========================")
    console.log("------------------------------CHECK===========================")
    console.log("------------------------------CHECK===========================")
    var include = [app.db.cases];
    var perPage = req.query.limit ? Number(req.query.limit) : 200,//showing 200 record per page
        page = req.query['page'] ? Number(req.query['page']) - 1 : 0,
        query = {};

    if (req.query.case_id) {
        query['case_id'] = Number(req.query.case_id);
    }
    query.status = {"$notIn": ['completed', 'QA-Completed', 'QA-Pending']};
    if(req.role.name == 'lea'){
        query.status = {"$notIn": ['completed', 'waiting', 'inprogress']};
    }
    if (req.query.start_date && req.query.end_date) {
        var date = new Date(req.query.start_date.substr(0, 10));
        var edate = new Date(req.query.end_date.substr(0, 10));
        edate.setDate(edate.getDate() + 1);
        edate = edate.toString();
        query.createdAt = {$gte: date, $lt: edate}
    }
    if (req.query.client_id) {
        query['client_id'] = req.query.client_id;
    }
    if (req.querypany_id) {
        query['company_id'] = req.querypany_id;
    }
    if (req.query.sort) {
        query['sort'] = req.query.sort;
    }

    let w = {}

    if (req.queryic || req.query.lastName || req.query.firstName || req.query.fatherName ||
        req.query.city) {
        delete query.status;
        w = {}
        if (req.queryic) {
            w['emp_id'] = {"$like": "%" + req.queryic + "%"};
        }
        if (req.query.city) {
            w['city'] = {"$like": "%" + req.query.city + "%"};
        }
        if (req.query.fatherName) {
            w['fatherName'] = {"$like": "%" + req.query.fatherName + "%"};
        }
        if (req.query.lastName) {
            w['lastName'] = {"$like": "%" + req.query.lastName + "%"};
        }

        if (req.query.firstName) {
            w['firstName'] = {"$like": "%" + req.query.firstName + "%"};
        }

        include = [
            {
                model: app.db.cases,
                where: w
            }
        ]

    }

    $where = {"$or": [{is_qa: 1}, {vo_updated: 1, qa_verified: 1}, {vo_updated: 1, qa_verified_dt: null}]};

    var requ = false;
    if (req.query.service_id) {
        $where = {}
        $where['vo'] = {"$in": req.query.service_id.split(',')}
        requ = true
    }
    if (req.query.qaStatus && req.query.qaStatus != '') {
        $where['qa_verified'] = req.query.qaStatus;
        delete query.status;
        requ = true
    }
    if (req.query.casetatus && req.query.casetatus != '') {
        $where['v_status_id'] = req.query.casetatus;
        delete query.status;
        requ = true
    }
    if (req.query.leaStatus && req.query.leaStatus != '') {
        $where['lea_status'] = req.query.leaStatus;
        delete query.status;
        requ = true
    }
    if (req.query.status) {
        query['status'] = {$or: req.query.status.split(/(?:,| )+/)};
    }

    include.push({
        model: app.db.CaseVerification,
        where: $where,
        required: requ,
        include: [{
            model: app.db.VerificationStatus,
            required: false
        }, {
            model: app.db.User,
        },]
    })


    CRUD.findPaginationWithRelation(CHECKS, page, perPage, include, async function (err, docs) {
        if (err) {
            return res.send(400, {
                code: 400,
                message: "Database Occurred Error",
                success: false,
                error: err
            });
        } else {
            if (docs) {
                var row = JSON.parse(JSON.stringify(docs.rows));

                for (let i = 0; i < row.length; i++) {

                    if (row[i].vo && row[i].vo > 0) {
                        row[i].VO_USER = await CRUD.findOneSync(app.db.User, {id: row[i].vo});
                    }
                }
                let workbook = new excel.Workbook(); //creating workbook
        let worksheet = workbook.addWorksheet('Customers'); //creating worksheet

        //  WorkSheet Header
        worksheet.columns = [
            { header: 'Id', key: 'id', width: 10 },
            { header: 'Name', key: 'name', width: 30 },
            { header: 'Address', key: 'address', width: 30},
            { header: 'Age', key: 'age', width: 10, outlineLevel: 1}
        ];
        worksheet.addRows(row);

        res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        res.setHeader('Content-Disposition', 'attachment; filename=' + 'customer.xlsx');

        return workbook.xlsx.write(res)
              .then(function() {
                    res.status(200).end();
              });
                res.send({
                    code: 200,
                    success: true,
                    message: "SuccessFully Find",
                    CHECKS: row,
                    page: page + 1,
                    totalPages: Math.ceil(docs.count / perPage),
                    count: docs.count
                });
            } else {
                console.log('--------------------------EMPTY DOC--------------------')
                res.send({
                    code: 200,
                    success: true,
                    message: "SuccessFully Find",
                    CHECKS: [],
                    page: page + 1,
                    totalPages: 0,
                    count: 0
                });
            }
        }
    }, query)
};

未处理的拒绝错误:发送标头后无法设置标头。

回答如下:

关于错误“未处理的拒绝错误:发送标头后无法设置标头。”您可以在Error: Can't set headers after they are sent to the client

中找到很好的解释

但是,我相信这不是问题。 TypeError: res.status(...).end is not a function错误是问题所在。从Express 5.x中删除了方法“ end”。另一种可能是res.status(status).send(http.STATUS_CODES[status])

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论