Как получить информацию из MySQL сразу после ее обновления? - PullRequest
1 голос
/ 28 января 2020

У меня есть интерфейс, который отображает список задач, взятых из базы данных, и форму, которая позволяет пользователю обновлять ее. Я хочу обновить интерфейс с новым списком после добавления новой задачи. Я попытался выполнить поисковый запрос после создания запроса и отправить информацию во внешний интерфейс, но он возвращает предыдущее значение.

app.post(
    "/addTask",
    passport.authenticate("jwt", { session: false }),
    (req, res) => {
      Task.create({
        description: req.body.data,
        user_id: req.user.dataValues.user_id
      }).then(
        Task.findAll({
          where: { user_id: req.user.dataValues.user_id }
        }).then(data => {
          console.log("HERE: ", data); // logs [], initial value when no tasks
          res.status(200).json(data);
        })
      );
    }
  );

Ответы [ 2 ]

1 голос
/ 28 января 2020

Можешь попробовать вот так?

app.post(
  "/addTask",
  passport.authenticate("jwt", { session: false }),
  (req, res) => {
    Task.create({
      description: req.body.data,
      user_id: req.user.dataValues.user_id
    }).then(result => {
      Task.findAll({
        where: { user_id: req.user.dataValues.user_id }
      }).then(data => {
        console.log("HERE: ", data); // logs [], initial value when no tasks
        res.status(200).json(data);
      });
    });
  }
);
0 голосов
/ 28 января 2020

Кто-то более теоретически склонный мог бы объяснить это лучше ... но, по моим наблюдениям, then() не ждет, пока create() не завершится , если вы не передадите параметр . Как показано ниже, если вы передадите newTask из create() в then(), вновь созданная задача появится в результате findall().

app.post(
    "/addTask",
    passport.authenticate("jwt", { session: false }),
    (req, res) => {
      Task.create({
        description: req.body.data,
        user_id: req.user.dataValues.user_id
      }).then(
        newTask=> {  // added *************
        Task.findAll({
          where: { user_id: req.user.dataValues.user_id }
        }).then(data => {
          console.log("HERE: ", data); // logs [], initial value when no tasks
          res.status(200).json(data);
        })
      }  // added ***********************
      );
    }
  );

HTH

...