sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose/NextJS - Model er ikke defineret / Kan ikke overskrive model, når først den er kompileret

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



  1. Brug af selleri til realtid, synkron ekstern API-forespørgsel med Gevent

  2. Mongodb 2.4 2dsphere-forespørgsler meget langsomme (ved hjælp af $geoIntersects)?

  3. Mongoose geospatial søgning:afstand virker ikke

  4. Hvordan fungerer PubSub i BookSleeve/ Redis?