Tôi đã cố gắng sửa chữa nó. Có hai vấn đề ở đây.
1) Biến "UserModel" không tồn tại trong phần mềm trung gian trước. Được giải quyết bằng cách khởi tạo this.constructor dường như giải quyết được vấn đề (sẽ cần thử nghiệm thêm)
2) Rõ ràng có một vấn đề với NextJS khi xây dựng mọi thứ, có vẻ như nó đang cố gắng tạo một mô hình mới bất cứ khi nào tôi sử dụng bất kỳ chức năng nào từ UserModel. Điều này được khắc phục khi xuất mô hình đã được tạo
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);