nodejs - функция запроса POST выполняется по запросу GET - PullRequest
0 голосов
/ 26 марта 2020

У меня есть такая структура:

/entries POST
/entries GET

, поэтому после почтового запроса я помещаю результат из базы данных в res.locals и перенаправляю на /entries.

, но когда я получить перенаправление на /entries, я вижу в консоли, что код, который я написал в app.post, запускается снова.

вот мой код:

router.get("/entries", verifyUser, (req, res) => {
  console.log("gdgdgdegdge: ", res.locals.entries);

  res.render("entries", {
    user: res.locals.decodedClaims,
    entries: res.locals.entries
  });
});

router.post(
  "/entries",
  verifyUser,
  [
    check("subject")
      .not()
      .isEmpty()
      .isAlphanumeric()
      .trim()
      .escape(),
    check("hours")
      .not()
      .isEmpty()
      .isAlphanumeric()
      .trim()
      .escape()
  ],
  async (req, res) => {
    // Finds the validation errors in this request and wraps them in an object with handy functions
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      return res.status(422).json({ errors: errors.array() });
    }
    console.log(req.body);//this gets logged again.

    let subject = req.body.subject;
    let hours = req.body.hours;

    const entriesCol = await db.collection("entries").get();
    const entriesDocs = await entriesCol.docs.map(query => {
      return {
        subject: query.data().subject,
        hours: query.data().hours,
        owner: query.data().owner
      };
    });

    const matched = await entriesDocs.filter(entry => {
      return subject === entry.subject && hours === entry.hours;
    });
    console.log("matched: ", matched); //this gets logged again.

    res.locals.entries = matched;

    res.redirect(200, "/entries");
    res.end();
  }
);

это происходит также, если я повторно ссылаюсь на sh страницу несколько раз. но если я сделаю запрос get на другой странице, я получу эту ошибку:

TypeError: C:\Users\mendi\Desktop\chavruta\views\entries.ejs:1
 >> 1| <% entries.forEach(entry=>{ %> <%= entry.subject %> <%= entry.hours %> <%=
    2| entry.onwer %> <% }) %>
    3|

Cannot read property 'forEach' of undefined
    at eval (C:\Users\mendi\Desktop\chavruta\views\entries.ejs:10:16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...