从Footer NODE JS / EXPRESS发布发布路线

时间:2019-07-03 03:07:02

标签: javascript node.js express nodemailer

因此,我正在建立一个实质上是博客的网站。我有从多个页面链接到数据库的帖子路线。

问:我怎样才能猜到多个帖子路线可以在一条路径上工作/如何对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");

             }
         });
 });

我如何才能使这两者一起工作,所以当某人输入其电子邮件地址并提交表单(在网站的任何页面上)时,它将提交数据而不会干扰当前页面上的任何其他发布途径。

0 个答案:

没有答案