在你关闭这个问题之前,我已经阅读了几个与我有相同问题的论坛,但我的问题截然不同。即使我不尝试做任何事情,甚至保存模型,它仍然给我一个错误:
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 目录在页面目录中。我只在页面重新编译后收到错误。
答案 0 :(得分:1)
所以事实证明错误来自 nextjs 试图在每次渲染时重新制作模型。这里有一个答案:Mongoose/NextJS - Model is not defined / Cannot overwrite model once compiled 但我认为代码太长了,所有修复我的只是一行。尝试在nextjs中保存模型时,应该这样写:
const modelName = mongoose.models.modelName || mongoose.model('modelName', flashcardSetSchema )