sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose/NextJS - Model není definován / Po zkompilování nelze přepsat model

Podařilo se mi to opravit. Byly zde dva problémy.

1) Proměnná "UserModel" v před middlewaru neexistuje. Vyřešeno vytvořením instance this.constructor, který problém zjevně řeší (bude potřebovat další testování)

2) Zjevně je problém s tím, jak vše vytváří NextJS, zdá se, že se snaží vytvořit nový model, kdykoli použiji jakoukoli funkci z UserModel. Toto je opraveno exportem již vytvořeného modelu

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 vs CouchDB (optimalizace rychlosti)

  2. Nodejs, nečeká na dokončení dotazu Redis, než bude pokračovat v provádění

  3. Připojení k Meteor Mongo z GUI

  4. Jak vytvořit vlastní databázi v redis?