условие ejs renderFile для проверки на ноль - PullRequest
0 голосов
/ 10 октября 2019

У меня есть почтовый маршрут, который использует шаблоны ejs для выбора разных файлов. Теперь я хочу проверить наличие других файлов, и если файлы не существуют или имеют значение null, следует выбрать файл по умолчанию "en.ejs"

внутри ejs.renderFile. Я хочу проверить наличие if(selectedLanguage !==null{}), но я не уверенкак я могу это сделать.

router.post('/mail', (req, res) => {
      const subject = 'Test Mail';
      const url = process.env.REPORT_URL;
      const selectLanguage = req.body.selectedLang
      sgMail.setApiKey(SGAPIKEY);
      ejs.renderFile(__dirname + `/../ejs/reports/${selectLanguage}.ejs`, {
        url: url
      },
        function (err, data) {
          if (err) {
            return err;
          } else {
            const msg = {
              to: req.body.sendTo_email,
              from: "test@test.com",
              subject: subject,
              html: data,
              cc: req.body.cc,
              attachments: [{
                content: req.body.pdfBase64,
                filename: 'file.pdf',
                type: 'application/pdf',
                disposition: 'attachment'
              }]
            };

            sgMail.send(msg, error => {
              if (error) {
                return res.status(400).send({
                  sent: false
                });
              } else {
                return res.status(200).send({
                  sent: true
                });
              }
            });
          }
        });
    });

1 Ответ

0 голосов
/ 10 октября 2019

Вы можете проверить, существует ли файл шаблона для выбранного языка (с помощью fs.access ) и перейти к шаблону en.ejs перед вызовом ejs.renderFile:

const fs = require('fs');

const getTemplateFileName = (lang, callback) => {
  const defaultTemplate = __dirname + '/../ejs/reports/en.ejs';
  const selectedLangTemplate =  __dirname + `/../ejs/reports/${lang}.ejs`;
  fs.access(selectedLangTemplate, fs.constants.F_OK, (err) => {
    if (err) {
      callback(defaultTemplate);
    } else {
      callback(selectedLangTemplate)
    }
  })
};

router.post('/mail', (req, res) => {
  const subject = 'Test Mail';
  const url = process.env.REPORT_URL;
  const selectLanguage = req.body.selectedLang
  sgMail.setApiKey(SGAPIKEY);
  getTemplateFileName(selectLanguage, (filename) => {
    ejs.renderFile(filename, { url }, function (err, data) {
      if (err) {
        return err;
      } else {
        const msg = {
          to: req.body.sendTo_email,
          from: "test@test.com",
          subject: subject,
          html: data,
          cc: req.body.cc,
          attachments: [{
            content: req.body.pdfBase64,
            filename: 'file.pdf',
            type: 'application/pdf',
            disposition: 'attachment'
          }]
        };

        sgMail.send(msg, error => {
          if (error) {
            return res.status(400).send({
              sent: false
            });
          } else {
            return res.status(200).send({
              sent: true
            });
          }
        });
      }
    })
  });
});

...