在您关闭此问题之前,我已经阅读了几个与我有相同问题的论坛,但我的问题截然不同。即使我没有尝试做任何事情,甚至保存模型,它仍然给我一个错误:
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 试图在每次渲染时重新制作模型。这里有一个答案:Mongoose/NextJS - 模型未定义/编译后无法覆盖模型 但我认为代码太长了,我的所有修复都只是一行。当尝试在 nextjs 中保存模型时,应该这样写:
const modelName = mongoose.models.modelName || mongoose.model('modelName', flashcardSetSchema )