sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose/NextJS - Modellen är inte definierad / Kan inte skriva över modellen när den väl har kompilerats

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



  1. MongoDB $query operator ignorerar index?

  2. Ställa in MongoDB-auktoriseringskonfiguration i Python-Eve

  3. Redis replikering och redis sharding (kluster) skillnad

  4. Hur man skriver följande mongo-uppslagsfråga i Yii2