Каков наилучший способ реализации сообщений, срок действия которых истекает через определенный период времени?

Я работаю над проектом React Native & MongoDB, в котором есть сообщения, срок действия которых истекает через 7 дней с момента создания. а затем изменить статус на просроченный.

Каков наилучший способ реализации сообщений, срок действия которых истекает через определенный период времени?

В настоящее время я думаю о проверке в начале каждого дня сообщений, срок действия которых скоро истечет, а затем уведомить пользователя, но как мне изменить статус на просроченный именно в тот момент, когда он истечет?

Обновлено:

Для людей из будущего, вот как я это сделал :)

const watchForExpired = () => {
  let interval = setInterval(async () => {
    let dateBeforeSevenDays = new Date();
    dateBeforeSevenDays.setDate(dateBeforeSevenDays.getDate() - 7);

    const listings = await Listing.find({
      $and: [
        {
          creationTime: { $lte: dateBeforeSevenDays },
        },
        {
          status: "approved",
        },
      ],
    });

    if (listings.length === 0) return;

    const updateQuery = await Listing.updateMany(
      { _id: { $in: listings.map(({ _id }) => _id) } },
      { $set: { status: "expired" } },
      { multi: true }
    );
  }, 60000);
};
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку у ваших сообщений есть атрибут createTime как атрибут, я бы получал текущее время примерно каждую минуту, а затем проверял, меньше ли значение createTime + 7 дней, чем текущее время, и если да, удаляю сообщение. Если вам это действительно нужно в ТОЧНОЕ время, у вас могут возникнуть проблемы с производительностью с большим количеством сообщений, поскольку вам придется реализовать потенциально несколько таймеров, и они действительно тяжелые.

Другие вопросы по теме