【问题标题】:Cannot overwrite mongoose model once compiled with Nextjs使用 Nextjs 编译后无法覆盖 mongoose 模型
【发布时间】:2021-07-06 14:58:39
【问题描述】:

在您结束这个问题之前,我已经阅读了几个与我有相同问题的论坛,但我的问题却大不相同。即使我不尝试做任何事情,甚至保存模型,它仍然给我一个错误:

cannot overwrite "mongoose" model once compiled

我感觉我的架构有问题,因为当它仍然更简单时,它工作得很好,但是当我试图让它变得更复杂时,它开始给我这个错误。这是我的猫鼬代码:

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}

我在服务器运行时连接到我的数据库,因此它不会不时断开连接。

更新

我意识到我正在使用 nextjs 内置 api,这意味着 api 目录在页面目录中。只有在页面重新编译后才会出现错误。

【问题讨论】:

    标签: mongodb mongoose next.js


    【解决方案1】:

    所以事实证明,错误来自 nextjs 试图在每次渲染时重新制作模型。这里有答案:Mongoose/NextJS - Model is not defined / Cannot overwrite model once compiled 但我认为代码太长了,我的所有修复都只是一行。尝试在 nextjs 中保存模型时,应该这样写:

    const modelName = mongoose.models.modelName || mongoose.model('modelName', flashcardSetSchema )  
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2020-10-07
      • 2013-10-03
      • 2015-04-25
      • 2020-05-08
      • 2021-03-01
      • 2019-01-13
      • 2014-08-03
      相关资源
      最近更新 更多