首页 > 解决方案 > 在特定时间删除 Mongoose,Nodejs 用户

问题描述

我有一个问题。如何在特定时间删除 mongoose 和 nodejs 用户?实际上,我希望在删除用户后的 60 天内将用户从数据库中删除。我是如何实现的?

我添加了类似 Momentjs 的东西,之后应该如何处理?此代码应在 60 天后用户进行删除操作时删除。

suspended: true, 
deleted: moment.utc().valueOf()

标签: node.jsmongodbexpressmongoose

解决方案


cron例如,安装任何 软件包,https://www.npmjs.com/package/node-schedule并在您的猫鼬模型中确保您存储 created_at 时间戳(如果不只是timestamps:true. 每天运行 cron

const UserSchema = new Schema({..}, { timestamps: true });

现在将代码段复制到您的 app.js 中

var schedule = require('node-schedule');

var j = schedule.scheduleJob('0 1 * * *', function(){
  return deleteOldUsers();
});

假设您的型号名称是User并且它的目录是./models/User

const User = require('./models/User');

deleteOldUsers = () => {
  let current = new Date();
  // subtracting 60 days
  current.setDate(current.getDate() - 60);
  User.deleteMany({ created_at: {$lte: current} }, (err) => {
    if(err) return console.log("Error while erasing users " + err);
    console.log("successfully erased data")
  })
}

编辑 - 如果您想使用 MOMENT JS 而不是日期

const User = require('./models/User');
const moment = require('moment');

deleteOldUsers = () => {
 // subtracting 60 days
 let current = moment().subtract(60, 'days');
 current = moment.utc(current).format();
 User.deleteMany({ created_at: {$lte: current} }, (err) => {
   if(err) return console.log("Error while erasing users " + err);
   console.log("successfully erased data")
 })

}


推荐阅读