sql >> Database >  >> NoSQL >> MongoDB

Mongoose/NextJS - Model is niet gedefinieerd / Kan model niet overschrijven nadat het is gecompileerd

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);



  1. Hoe gebruik ik Map/Reduce in MongoDB?

  2. MongoDB-aggregatie - $ groeperen op datum, zelfs als deze niet bestaat

  3. Socket.io, Redis Store en IE

  4. MongoDB synchroniseert ontwikkelings- en productiedatabases