myex-cli
Version:
Opinionated Express.js framework with CLI tools
59 lines (56 loc) • 1.33 kB
JavaScript
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);