Перенаправление после получения сообщения в node.js с express - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть страница js (/ profile / addcalender), и я беру данные с этой страницы, используя fetch и post. Я могу получать и обрабатывать данные в своем методе отправки на сервер, но я не могу перенаправить его после него.

Вот соответствующая часть страницы e js:

<li><button class="contact100"  id='nextstp' style="width: 100%; height: 100px; font-size: larger; padding-bottom: 0px;"> <span>SCHEDULE</span></button></li>

Это связанная часть. js файла, подключенного к e js для получения данных и использования извлечения:

function moveon(){  //Collecting data in here // Bu fonksiyon da dataları toplaman lazım !!
 var mailler = mails; // ALL mails
 var Title = document.getElementById("title").value; // Meeting Title
 var desc = document.getElementById("description").value; // Meeting Description

 if(!Title){alert("Cannot Submit without title"); return;}
 if(!desc){alert("Description is mandatory"); return;}
 if(mails.length < 1){alert("You need AT LEAST one attendee"); return;}

 var stuff = {title: Title, decription: desc, mails:mailler}
 console.log(stuff);
 console.log(JSON.stringify(stuff));

 var stuff2 = {title : "alex", description: "de souza"};
 options = {
   method : 'POST',
   redirect: 'follow',
   body: JSON.stringify(stuff),
   headers: {
     'Content-Type': 'application/json'
   }
 };

 fetch('/profile/addcalender', options);

}

Вот где я принимаю пост-запрос с express:

  router.get('/addcalender', (req,res) => {
  //console.log(req.user);

   res.render('calendermeet',{user:req.user});
  })

  router.post('/addcalender', userController.postCalenderMeet);

Вот где я обрабатываю данные на стороне сервера в usercontroller:

module.exports.postCalenderMeet = (req, res, next) => {
console.log("POST CALENDAR MEEEET")

async function main() {

    var userCalendars = [];

    for (email of req.body.mails) {
        await User.findOne({
            email: email
        }).then(user => {
            if (user) {
                //console.log(user.name);
                //console.log(user.calender);
                userCalendars.push(user.calender)
            }
        }).catch(err => console.log(err));
    }

    userCalendars.push(req.user.calender);

    console.log("1");
    console.log(userCalendars);
    console.log("2");

    res.redirect("/profile/calender");

    return userCalendars;

  }

  main();



 };

Обычно я принимаю почтовые запросы из формы, а на стороне сервера работает перенаправление. Но когда я использовал fetch, он не перенаправляет, и я остаюсь на той же странице.

1 Ответ

0 голосов
/ 17 апреля 2020

Перенаправление означает «То, что вы просили, можно найти здесь».

Это не означает «Перейдите в главное окно браузера здесь».

Браузер автоматически выполнит перенаправление и сделайте ответ доступным через fetch API.

Если вы хотите перейти на новую страницу: не используйте fetch. Весь смысл в том, чтобы сделать HTTP-запрос без навигации.

Вместо этого используйте форму.

...