Пост Маршрут из нижнего колонтитула NODE JS / EXPRESS - PullRequest
1 голос
/ 03 июля 2019

Итак, я создаю сайт, который по сути является блогом.У меня есть сообщения маршрутов из нескольких страниц, которые ссылаются на БД

В: Как я могу угадать маршрут по нескольким сообщениям для работы по одному пути / как мне запрограммировать маршрут из 1 сообщения, чтобы он выполнял 'либо или'?

Надеюсь, мой вопрос ясен,

Спасибо

Проблема в том, что у меня есть форма "подписаться на электронную почту" в нижнем колонтитуле, которая отображается на всех страницах.Я могу заставить работать почтовый маршрут, однако он отменяет любые другие почтовые маршруты, которые находятся на том же пути.Например: 1. У меня есть маршрут публикации для новых сообщений в блоге в / blog 2. Если я введу адрес электронной почты в форму из нижнего колонтитула и отправлю, текущий маршрут публикации будет работать (пришлите мне электронное письмо с тем, что новый подписчик имеетоднако, если я сейчас попробую добавить новое сообщение в блоге, он просто отправит запрос с пустой формой из нижнего колонтитула и отправит мне электронное письмо со значением «undefined» (obv).

//CREATE - add new blogpost to DB
router.post("/blog", function(req, res){

  var name = req.body.name;
  var image = req.body.image;
  var desc = req.body.description;
  var author = {
      id: req.user._id,
      username: req.user.username
  }
  var email = req.body.email;

  geocoder.geocode(req.body.location, function (err, data) {
    if (err || !data.length) {
      req.flash('error', 'Invalid Address');
      return res.redirect('back');
    }
    var lat = data[0].latitude;
    var lng = data[0].longitude;
    var location = data[0].formattedAddress;
    var newPost = {name: name, image: image, caption: caption, description: desc, author:author, location: location, lat: lat, lng: lng};
    // Create a new Post and save to DB
    Post.create(newPost, function(err, newlyCreated){
        if(err){
            console.log(err);
        } else {
            //redirect back to posts page
           console.log(newlyCreated);
            res.redirect("/blog");
        }
    });
  });
});

________________________________


router.post("/blog", (req,res) => {
     const output = `
             <p> You have a new subscriber </p>
             <h3> Contact Details </h3>
            <ul>
            <li> Email: ${req.body.email} </li>
             </ul>
            <h3> Message </h3>
            <p>  Someone Subscribed to your email list </p>
    `;
          let mailerConfig = {    
             host: "smtp.office365.com",  
             secureConnection: true,
            port: 587,
            auth: {
               user: "####",
                pass: "###"
             }
        };
         let transporter = nodemailer.createTransport(mailerConfig);

        let mailOptions = {
             from: mailerConfig.auth.user,
             to: '@',  
             subject: 'Someone subscribed to your Blog!',
             html: output
         };

         transporter.sendMail(mailOptions, function (error) {
             if (error) {
                 console.log('error:', error);
             } else {
                 console.log('message sent');
                 req.flash("success","Message Sent!")
                 res.redirect("back");

             }
         });
 });

Как я могу заставить этих двоих работать вместе, чтобы, когда кто-то вводил свой адрес электронной почты и отправлял форму (на любой из страниц веб-сайта), он отправлял данные без потенциального прерывания любых других почтовых маршрутов на текущемстр.

...