Spaces:
Running
Running
const { ObjectId } = require("bson"); | |
const { default: mongoose } = require("mongoose"); | |
const Schema = mongoose.Schema; | |
const userSchema = new Schema({ | |
Timestamp: { | |
type: Date, | |
default: Date.now, | |
required: true, | |
}, | |
Name: { | |
type: String, | |
required: [true, "Name is required."], | |
}, | |
Email: { | |
type: String, | |
required: [true, "Email is required."], | |
unique: true, | |
match: [/^[^\s@]+@[^\s@]+\.[^\s@]+$/, "Please provide a valid email address."], | |
}, | |
RollNumber: { | |
type: Number, | |
validate: { | |
validator: function (value) { | |
return /\d{9}/.test(value); | |
}, | |
message: "Please provide a valid Roll Number.", | |
}, | |
unique: true, | |
required: [true, "Roll number is required."], | |
}, | |
PhoneNumber: { | |
type: String, | |
validate: { | |
validator: function (value) { | |
return /\d{10}/.test(value); | |
}, | |
message: "Please provide a valid 10-digit phone number.", | |
}, | |
required: [true, "Phone number is required."], | |
unique: true, | |
}, | |
TeamID: { | |
type: Schema.Types.ObjectId, | |
ref: "Team", | |
}, | |
Branch: { | |
type: String, | |
required: [true, "Branch is required"], | |
}, | |
Year: { | |
type: String, | |
enum: ["First", "Second", "Third", "Fourth"], | |
required: [true, "Year is required"], | |
}, | |
DiscordID: { | |
type: String, | |
required: [true, "Discord ID is required."], | |
unique: true | |
}, | |
Password: { | |
type: String, | |
required: [true, "Password is required."], | |
}, | |
Role: { | |
type: String, | |
default: "Member", | |
}, | |
RoomID: { | |
type: Schema.Types.ObjectId, | |
ref: "Room", | |
}, | |
}); | |
userSchema.virtual("url").get(function () { | |
return `/users/${this._id}`; | |
}); | |
module.exports = mongoose.model("User", userSchema); | |