Mongodb 使用Nextjs编译后无法覆盖mongoose模型
在你结束这个问题之前,我已经阅读了几个论坛,它们和我有相同的问题,但我的问题是完全不同的。即使我不想做任何事情,即使保存模型,它仍然会给我一个错误:Mongodb 使用Nextjs编译后无法覆盖mongoose模型,mongodb,mongoose,next.js,Mongodb,Mongoose,Next.js,在你结束这个问题之前,我已经阅读了几个论坛,它们和我有相同的问题,但我的问题是完全不同的。即使我不想做任何事情,即使保存模型,它仍然会给我一个错误: cannot overwrite "mongoose" model once compiled 我觉得我的模式有些问题,因为当它更简单时,它工作得很好,但当我试图使它更复杂时,它开始给我这个错误。这是我的猫鼬代码: import mongoose from 'mongoose' const flashcardItemSche
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目录在页面目录中。我只会在重新编译页面时收到错误。因此,错误来自于nextjs尝试在每次渲染时重新生成模型。这里有一个答案: 但是我觉得代码太长了,而我的代码只是一行。当试图在nextjs中保存模型时,应该这样写:
const modelName = mongoose.models.modelName || mongoose.model('modelName', flashcardSetSchema )