UNPKG

create-nodeapi-backend

Version:

A powerful Node.js backend boilerplate with Express, MongoDB, Firebase, JWT auth, Nodemailer, cron jobs, input validation (Joi), and serverless support for Vercel. Scaffold a full-featured API backend in seconds.

44 lines (38 loc) 1.23 kB
const mongoose = require("mongoose"); const cron = require("node-cron"); const tokenSchema = new mongoose.Schema( { userId: { type: mongoose.Schema.Types.ObjectId, ref: "User", required: true }, token: { type: String, required: true }, role: { type: String, enum: ["user", "admin"] }, type: { type: String, enum: ["access", "refresh", "reset", "2fa"], required: true }, status: { type: String, enum: ["active", "revoked"] }, expiresAt: { type: Date, required: true } }, { timestamps: true } ); const Token = mongoose.model("Token", tokenSchema); const deleteExpiredTokens = async () => { try { const now = new Date(); const result = await Token.deleteMany({ expiresAt: { $lte: now } }); if (result.deletedCount > 0) { console.log(`🗑️ Deleted ${result.deletedCount} expired tokens`); } } catch (error) { console.error("❌ Error deleting expired tokens:", error.message); } }; if (process.env.NODE_ENV !== "test") { cron.schedule("*/10 * * * * *", deleteExpiredTokens); console.log("✅ Token cleanup job scheduled to run every 10 seconds."); } module.exports = Token;