Cron, Mongoose, NodeJS, 如果没有验证,自动删除用户数据

我想自动删除用户数据,前提是他们在 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));
});

我的 console 中也收到了成功消息:

Cron, Mongoose, NodeJS, 如果没有验证,自动删除用户数据

但我的用户数据没有被删除。

Cron, Mongoose, NodeJS, 如果没有验证,自动删除用户数据

请告诉我我做错了什么,我之前没有使用过 cron,或者是否有任何其他方法可以做到上述情况。

l1314121 回答:Cron, Mongoose, NodeJS, 如果没有验证,自动删除用户数据

您的架构使用 timestamps option。来自文档:

时间戳选项告诉猫鼬将 createdAt 和 updatedAt 字段分配给您的架构。分配的类型是日期。

默认情况下,字段的名称是 createdAt 和 updatedAt。通过设置 timestamps.createdAt 和 timestamps.updatedAt 来自定义字段名称。

在您的代码中,过滤器指定 created_at,而它应该是 createdAt

本文链接:https://www.f2er.com/4602.html

大家都在问