我有一个问题,如何在特定时间删除mongoose和nodejs用户?实际上,我希望用户在删除后 60 天内从数据库中删除。我如何实现这一目标?
我添加了Momentjs之类的东西,之后应该怎么做?该代码应在用户进行删除操作 60 天后删除。
suspended: true,
deleted: moment.utc().valueOf()
安装任何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 而不是 Date
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")
})
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)