Перенаправление после выборки сообщения в node.js с экспрессом

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

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

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

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

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);

}

Вот где я беру почтовый запрос с экспрессом:

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

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

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

Вот где я обрабатываю данные на стороне сервера в пользовательском контроллере:

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, он не перенаправляется, и я остаюсь на той же странице.


person kgnkrkmz    schedule 17.04.2020    source источник


Ответы (1)


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

Это не означает «перемещаться по главному окну браузера здесь».

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

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

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

person Quentin    schedule 17.04.2020
comment
Спасибо за ответ, я попытаюсь сделать это с помощью формы, но все же есть способ сделать это с помощью выборки. - person kgnkrkmz; 17.04.2020
comment
Нет, нет. - person Quentin; 05.08.2021