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); | |