Mongoose validator not working as expected

hi there,i want to add batch,department,stream,id fields to the schema depending if usertype is “Student”,i do not understand why,but sometimes it adds the fields sometimes not.forexample if i created a user with usertype “Student” first it does not add the fields,but after that when i created a user with usertype “Teacher” or “Admin” it asks me the fields are required meaning it add the fields and this happens vice versa.why any way to fix this issue?please help guys.
what i have tried well,i have asked chatGpt but no answers i mean just the answers do not solve the issue.
here is the code?

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const userSchema = new Schema(
  {
    fullName: { type: String, required: true, unique: true },
    email: { type: String, required: true, unique: true },
    userType: {
      type: String,
      required: true,
    },
    phoneNumber: { type: String, required: true },
    password: { type: String, required: true },
    approved: { type: Boolean, default: true },
  },
  {
    timestamps: true,
  }
);

userSchema.pre("validate", function (next) {
  if (this.userType === "Student") {
    this.constructor.schema.add({
      batch: {
        type: Number,
        required: true,
      },
      department: {
        type: String,
        required: true,
      },
      stream: {
        type: String,
        required: true,
      },
      id: { type: String, required: true }, //, unique: true
    });
  } 
  next();
});
 const userModel = mongoose.model("users", userSchema);

module.exports = userModel;

Wrong forum.
We discuss here about MongooseOS.