sql >> データベース >  >> NoSQL >> MongoDB

Mongoose/NextJS-モデルが定義されていません/コンパイル後にモデルを上書きできません

    私はなんとかそれを修正することができました。ここには2つの問題がありました。

    1)「UserModel」変数はプリミドルウェアに存在しません。明らかに問題を解決するthis.constructorをインスタンス化することで解決しました(さらにテストが必要です)

    2)NextJSがすべてを構築することに問題があるようです。UserModelの関数を使用するたびに、新しいモデルを作成しようとしているようです。これは、作成済みのモデルのエクスポートで修正されました

    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. infinispanキャッシュストアとしてmongodbを使用した場合の例外

    2. MongoDBに挿入されたドキュメントの_idを取得しますか?

    3. サーバー127.0.0.1:27017に接続できませんでした接続の試行に失敗しましたMongoDB

    4. MatlabおよびJavaドライバーを介してMongoDB(gridfs)からデータを読み取ります