Ik heb het kunnen repareren. Er waren hier twee problemen.
1) De variabele "UserModel" bestaat niet in de pre-middleware. Opgelost door deze.constructor te instantiëren, wat het probleem blijkbaar oplost (verder testen vereist)
2) Er is blijkbaar een probleem met NextJS die alles bouwt, het lijkt erop dat het probeert een nieuw model te maken wanneer ik een functie van UserModel gebruik. Dit is opgelost bij het exporteren van het reeds gemaakte model
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);