Jeg har formået at ordne det. Der var to problemer her.
1) "UserModel"-variablen findes ikke i præ-middlewaren. Løst ved at instantiere this.constructor, som tilsyneladende løser problemet (skal testes yderligere)
2) Der er tilsyneladende et problem med at NextJS bygger alt, det ser ud til, at det prøver at skabe en ny model, når jeg bruger en funktion fra UserModel. Dette er løst ved at eksportere den allerede oprettede 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);