Jag har lyckats fixa det. Det fanns två problem här.
1) Variabeln "UserModel" finns inte i pre-mellanvaran. Löst genom att instansiera this.constructor som tydligen löser problemet (kommer att behöva testa ytterligare)
2) Det finns tydligen ett problem med att NextJS bygger allt, det verkar som om det försöker skapa en ny modell när jag använder någon funktion från UserModel. Detta är fixat vid export av den redan skapade modellen
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);