اذهب إلى المحتوى

السؤال

نشر

هذا هو الموديل الخاص بي

import mongoose from 'mongoose'

const flashcardItemSchema = new mongoose.Schema({
    term: {
        type:String,
        required: true,
        min:1
    },
    description: {
        type:String,
        required:true,
        min:1
    }
});
const FlashcardItem = mongoose.model("flashcardItem", flashcardItemSchema);

const flashcardSetSchema = new mongoose.Schema({
    title: {
        type: String,
        min: 1,
    },
    flashcards:[flashcardItemSchema],
})

const FlashcardSet = mongoose.model('flashcardSet', flashcardSetSchema )

export {FlashcardItem, FlashcardSet}

عند تشغيل المشروع أحصل على 

cannot overwrite "mongoose" model once compiled

 

Recommended Posts

  • 0
نشر

وكطريقة مختصرة:

كي لايتم تعريف ال Schema مرتين في المشروع حيث أن Next تحاول بناء نسخة عند كل render

طبق نفس الفكرة لكل module تحاول بناءه المثال التالي لموديل user

module.exports = mongoose.models.Users || mongoose.model('Users', UsersSchema);

وبشكل عام، يوجد عدة احتمالات للخطأ

  1. استدعاء هذا الملف في مكانين مختلفين، مايؤدي لظهور خطأ أن هذا module معرف مسبقا.
  2. ربما تقوم بتعريف نفس Schema في مكان آخر لنفس Collection
  3. استعاء نفس النوذج بمكانين مختلفين بنفس المسار للدالة require
    require('./models/User') // file1
    
    require('./models/User') // file2

     

 

لتجنب حدوثها، يمكننا إعادة المستخدم المعرف مسبقاً إن وُجد بدل إنشاءه:

طبق هذه الفكرة على نماذجك..

let User;
try {
  User = mongoose.model("User");  // موجود
} catch {
  User = mongoose.model("User", userSchema); // نقوم بإنشاءه
}

إن كنت تستخدم serverless يمكنك تنفيذ أمر التشغيل كالتالي:

serverless offline --skipCacheInvalidation

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...