node.js - 在特定时间删除 Mongoose,Nodejs 用户
问题描述
我有一个问题。如何在特定时间删除 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 而不是日期
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")
})
}
推荐阅读
- html - Ruby 输出 Kramdown 到 Text/Kramdown
- oracle - Oracle 中的重复数据删除
- reactjs - 我可以覆盖 node_modules 文件中定义的方法吗?
- php - 用于显示商店营业时间的 php 脚本无法正常工作
- html - Angular Like Counter
- sqlite - 有没有办法在 SQLite 中转置表,包括列名?
- nlp - 如何使用 Stanford CoreNLP Dependency Parser 检测动词顺序?
- firebase - 如何使用滑动刷新布局刷新 Firestore 分页适配器中的数据
- php - How to SELECT from database for each index in an array
- transactions - 在 Slim 框架中使用事务