我想自动删除用户数据,前提是他们在 7 天内未验证电子邮件。我用谷歌搜索并找到了这个 answer。我试过&这是源代码:
用户架构
const userSchema = new mongoose.Schema(
{
name: {
type: String,trim: true,required: [true,"Please enter your name"],max: 32,},email: {
type: String,"Please enter your email"],unique: true,lowercase: true,password: {
type: String,"Please enter a valid password"],minlength: 8,isAdmin: {
type: Boolean,required: true,default: false,isVerify: {
type: Boolean,resetPasswordToken: {
data: String,default: "",{ timestamps: true }
);
server.js
require("dotenv").config({
path: "C:/Users/Administrator/Documents/Web Dev/Portfolio/FullStack/complete-auth-v2/.env",});
const express = require("express");
const morgan = require("morgan");
const cors = require("cors");
const schedule = require("node-schedule");
const connectDB = require("./config/db");
const errorHandler = require("./error/errorHandler");
const User = require("./models/userModels");
const authRoutes = require("./routes/authRoutes");
connectDB();
const app = express();
app.use(cors());
app.use(express.json());
app.use(morgan("dev"));
app.use("/api",authRoutes);
// >>>>>>> ~ Delete User Data if not verified ~ <<<<<<<
const job = schedule.scheduleJob("*/10 * * * * *",function () {
return deleteOldUsers();
});
const deleteOldUsers = () => {
const current = new Date();
// subtracting 7 days
// current.setDate(current.getDate() - 7);
User.deleteMany({ isVerify: false,created_at: { $lte: current } },(err) => {
if (err) return console.log("Error while erasing users " + err);
console.log("successfully erased data");
});
};
// >>>>>>> ~ Delete User Data if not verified ~ <<<<<<<
app.use(errorHandler);
const PORT = process.env.PORT || 5000;
const server = app.listen(PORT,() => {
console.log(`Server running on PORT: ${PORT}`);
});
process.on("unhandledRejection",(err,promise) => {
console.log(`Logged Error: ${err.message}`);
server.close(() => process.exit(1));
});
请告诉我我做错了什么,我之前没有使用过 cron
,或者是否有任何其他方法可以做到上述情况。