Как установить TTL для документа mon go DB через маршрут node js - PullRequest
1 голос
/ 29 мая 2020

Я создал маршрут удаления учетной записи, чтобы удалить информацию о пользователях через определенные дни. Для этого я использовал функцию SetTimeOut (). Но проблема в том, что если по какой-то причине сервер перезагружается, это не работает. Итак, есть ли другой способ добиться этого. Спасибо.

Ниже приведен код:

router.post("/delete", async (req, res, next) => {
  const mailId = req.body.email;
  const deletionTime = moment().format("DD-MMM-YYYY, h:mm:ss a");
  await Register.findOne({ email: mailId })
    .exec()
    .then(async (result) => {
      if (req.body.password === result.password) {
        await Register.updateOne(
          { email: mailId },
          {
            $set: {
              accountDeleted: true,
              deletionFeedback: req.body.deletionFeedback,
              latitude: req.body.latitude,
              longitude: req.body.longitude,
              deletionDate: deletionTime,
              deletionIP: req.body.deletionIP,
              isp: req.body.isp,
              location: req.body.location,
            },
          }
        )
          .exec()
          .then(async (result) => {
            setTimeout(async function(){
              await Register.updateOne(
                { email: mailId },
                {
                  $set: {
                    permanentlyDeleted: true,
                  },
                }
              )
                .exec();
            }, 60000);
            res.status(200).json({
              userDeleted: true,
            });
          })
          .catch((err) => {
            console.log(err);
            res.status(400).json({
              userDeleted: false,
            });
          });
      } else {
        res.status(400).json({
          result: 0,
          message: "Invalid password.",
        });
      }
    })
    .catch((err) => {
      res.status(400).json({
        result: 0,
        message: "Invalid Email ID.",
      });
    });
});

Дело в том, что если я перезапускаю сервер, функция внутри метода setTimeOut () не работает. Есть ли для этого альтернатива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...