Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Next.js中正确使用Mongoose模型?_Javascript_Node.js_Typescript_Mongoose_Next.js - Fatal编程技术网

Javascript 如何在Next.js中正确使用Mongoose模型?

Javascript 如何在Next.js中正确使用Mongoose模型?,javascript,node.js,typescript,mongoose,next.js,Javascript,Node.js,Typescript,Mongoose,Next.js,我正在用TypeScript和MongoDB/Mongoose构建Next.js应用程序。在使用Mongoose模型时,我开始遇到一个错误,这导致他们每次使用模型时都试图覆盖它 导致模型覆盖错误的代码: 从“猫鼬”导入猫鼬; const{Schema}=mongoose; const categorySchema=新模式({ 名称:{type:String,必需:true}, 颜色:{type:String,必需:true} }) 导出默认mongoose.model('Category',ca

我正在用TypeScript和MongoDB/Mongoose构建Next.js应用程序。在使用Mongoose模型时,我开始遇到一个错误,这导致他们每次使用模型时都试图覆盖它

导致模型覆盖错误的代码:

从“猫鼬”导入猫鼬;
const{Schema}=mongoose;
const categorySchema=新模式({
名称:{type:String,必需:true},
颜色:{type:String,必需:true}
})
导出默认mongoose.model('Category',categorySchema',categories')
我发现在许多使用Next.js和Mongoose的项目中,包括Next.js的示例项目,他们在导出时使用了以下语法来解决此问题:

导出默认mongoose.models.Category | | mongoose.model('Category',categorySchema,'categories'))
这感觉很奇怪,就像“绷带解决方案”一样,但乍一看似乎就奏效了;如果模型已经存在,则可以防止覆盖。然而,在使用TypeScript时,我开始遇到另一个问题,过了一段时间后,我发现正是这一行导致了这个问题。由于导出是finnicky,TypeScript无法解析类别模型,每当我尝试使用它的大多数属性或方法时,都会抛出错误。我更深入地研究了它,发现其他一些人通过这样做:

从“猫鼬”导入猫鼬;
const{Schema}=mongoose;
const categorySchema=新模式({
名称:{type:String,必需:true},
颜色:{type:String,必需:true}
})
接口类别字段{
名称:string,
颜色:字符串
}
类型CategoryDocument=mongoose.Document和CategoryFields
导出默认值(mongoose.models.Category为mongoose.Model)| | mongoose.Model('Category',categorySchema,'categories'))
再一次,这似乎起到了作用,但它只是在欺骗TypeScript,让它相信没有什么奇怪的事情发生,而事实上确实发生了

没有真正的解决方案来解决模型覆盖问题,而不跳过障碍,用其他错误覆盖错误吗

提前谢谢