Я не могу загрузить файл Excel в API отправки Nodejs из внешнего интерфейса (угловой 4). Может кто-нибудь помочь мне здесь? Я прилагаю изображение и исходный код, который я использую в бэкэнде в узле js.
Снимок экрана ошибки
app.controllers.getExcel = function (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.query.company_id) {
query['company_id'] = req.query.company_id;
}
if (req.query.sort) {
query['sort'] = req.query.sort;
}
let w = {}
if (req.query.cnic || req.query.lastName || req.query.firstName || req.query.fatherName ||
req.query.city) {
delete query.status;
w = {}
if (req.query.cnic) {
w['emp_id'] = {"$like": "%" + req.query.cnic + "%"};
}
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)
};
Ошибка необработанного отклонения: невозможно установить заголовки после их отправки.