实施一段时间后过期的帖子的最佳方法是什么?

what is the best way to implement posts that expire after a period of time?

我正在开发一个 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);
};

因为你的 posts 有 creationTime 作为属性,我会每隔一分钟左右获取一次当前时间,然后检查 creationTime + 7 天是否小于当前时间,如果是,删除post。如果你确实在确切的时间需要它,你可能会遇到很多 post 的性能问题,因为你可能必须实现多个计时器,而且它们真的很重。