Успях да го оправя. Тук имаше два проблема.
1) Променливата „UserModel“ не съществува в предварителния мидълуер. Решено чрез инстанциране на this.constructor, което очевидно решава проблема (ще се нуждае от допълнително тестване)
2) Очевидно има проблем с NextJS, който изгражда всичко, изглежда, че се опитва да създаде нов модел, когато използвам която и да е функция от UserModel. Това е коригирано при експортиране на вече създаден модел
const mongoose = require("mongoose");
const errorHandler = require("../helpers/errorHandler");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
userName: String,
userPassword: String,
userBanned: Boolean,
userType: String,
registeredDate: { type: Date, default: Date.now },
registeredIP: String,
lastLoginDate: { type: Date, default: Date.now },
lastLoginIP: String,
});
UserSchema.pre("save", async function () {
try {
const User = this.constructor;
const userExists = await User.find({
userName: this.get("userName"),
})
.lean()
.exec();
if (userExists.length > 0) {
throw new Error(errorHandler.errors.REGISTER_USERNAME_EXISTS);
}
} catch (err) {
throw new Error(errorHandler.errors.REGISTER_USERNAME_EXISTS);
}
});
module.exports = mongoose.models.User || mongoose.model("User", UserSchema);