UNPKG

myex-cli

Version:

Opinionated Express.js framework with CLI tools

59 lines (56 loc) 1.33 kB
import mongoose from 'mongoose'; const userSchema = new mongoose.Schema( { name: { type: String, required: [true, 'Name is required'], trim: true, minlength: [2, 'Name must be at least 2 characters long'], maxlength: [50, 'Name cannot exceed 50 characters'], }, email: { type: String, required: [true, 'Email is required'], unique: true, trim: true, lowercase: true, match: [ /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/, 'Please provide a valid email address', ], }, password: { type: String, required: [true, 'Password is required'], minlength: [8, 'Password must be at least 8 characters long'], }, role: { type: String, enum: ['user', 'admin'], default: 'user', }, isActive: { type: Boolean, default: true, }, lastLogin: { type: Date, default: null, }, }, { timestamps: true, toJSON: { transform: (doc, ret) => { ret.id = ret._id.toString(); delete ret._id; delete ret.__v; delete ret.password; // Exclude password from JSON output return ret; }, }, } ); // Indexes userSchema.index({ email: 1 }); export const User = mongoose.model('User', userSchema);