💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ Ali Naseri
دانلود یک فایل توسط اکسپرس
کیوان علی محمدی حل شده توسط کیوان علی محمدی

سلام استاد خسته نباشید

ببخشید اگه سوالم مرتبط با جلسه نیست 

 

بنده یک فایل excel با پکیج exceljs ساختم و وقتی که به route مورد نظر بریم فایل دانلود میشه

اینطور عمل کردم آیا این روش درسته چه پیشنهادی برای بهتر شدن ساختار دارید؟

 

فایلی که فایل excel را می‌سازد

const Excel = require("exceljs");
exports.create = async (sheetName, data) => {
  const workbook = new Excel.Workbook();
  const sheet = workbook.addWorksheet(sheetName);
  const filterData = data.map((word) => {
    delete word.__v;
    return word;
  });
  sheet.columns = Object.keys(filterData[0]).map((col) => {
    return { header: col, key: col, width: 20};
  });
  sheet.addRows(filterData.map((row) => {
    const rowArray = Object.values(row).map((value) => value);
    return rowArray;
  }));
  const xlsxFile = await workbook.xlsx.writeBuffer();
  return xlsxFile;
};

 

قسمت دریافت اطلاعات از دیتابیس و تبدیل به excel :

exports.excel = async (req, res) => {
  const shops = await shopsModel.aggregate([{ $sort: { _id: 1 } }]);
  const excelFile = await excelService.create("new", shops);
  res.set("Content-disposition", "attachment; filename=shops.xlsx");
  res.set("Content-Type", "text/plain");
  res.send(excelFile);
};

اینجا به درستی کار میکنه ولی اگه به جای aggregate از find استفاده کنم به مشکل میخوره

سلام. مشکلی خاصی توی کدها نیست. البته اگر نوع داده‌ها و فایل‌ها بیشتر بشه قطعا ساختار بهتری نیاز داره.

بهترین پاسخ
کیوان علی محمدی ۲۹ مهر ۱۳۹۹، ۱۷:۰۰