如何使用 Mongoose 删除超过 24 小时的所有对象?

How can I delete all objects over 24 hours old using Mongoose?

我想删除我的应用程序中用户注册、创建帐户但未通过上传某些图片完成验证过程的所有未完成帐户...

我是 运行 每 24 小时执行一次此任务的 cron 作业...

我想删除 imageUrlOne & imageUrlTwo == "" AND createdAt 超过 24 小时的所有对象。

我当前的代码不工作,知道我做错了什么吗?

谢谢你

const User = require("../models/user-model")

const removeInactiveAccounts = async () => {
  let twentyFourHours = miliseconds(24, 0, 0)
  //                     hours, min, seconds

  function miliseconds(hrs, min, sec) {
    return (hrs * 60 * 60 + min * 60 + sec) * 1000
  }

  let startDate = Date.now() // todays date
  let endDate = startDate - twentyFourHours // 24 hours ago from today

  try {
 
    await User.deleteMany({
      imageUrlOne: "",
      imageUrlTwo: "",
      createdAt: {
        $gte: startDate,
        $lte: endDate,
      },
    })
  } catch (err) {
    console.log(err.message)
  }
}

module.exports = removeInactiveAccounts

你的标志有点混乱。

你说的比“现在”还早,不到 24 小时前。

为简单起见,假设“现在”是 86400。那将使“24 小时前”0.

所以,你有:createdAt >= 86400 && createdAt <= 0.

嗯,那是不可能的。任何数字不能同时大于 86,400 和小于 0。

在这种情况下,您根本不需要包括开始日期。放弃它,只创建小于 endDate 的时间,你应该没问题。