小编Nic*_*las的帖子

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

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

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

import mongoose from 'mongoose';

const { Schema } = mongoose;

const categorySchema = new Schema({
  name: {type: String, required: true},
  color: {type: String, required: true}
})

export default mongoose.model('Category', categorySchema, 'categories')
Run Code Online (Sandbox Code Playgroud)

我发现在许多使用 Next.js 和 Mongoose 的项目中,包括 Next.js 的示例项目,他们在导出时使用以下语法来解决这个问题:

export default mongoose.models.Category || mongoose.model('Category', categorySchema, 'categories')
Run Code Online (Sandbox Code Playgroud)

这感觉很奇怪,有点像“创可贴解决方案”,但乍一看似乎很有效;如果模型已经存在,它可以防止覆盖。然而,使用 TypeScript 我开始遇到另一个问题,过了一段时间我发现这个问题是由那一行引起的。由于导出非常繁琐,TypeScript 无法解析类别模型,并且每当我尝试使用它的大部分属性或方法时都会抛出错误。我更深入地研究了它,发现其他一些人通过这样做来解决这个问题:

import mongoose from 'mongoose';

const { Schema } = mongoose;

const categorySchema = new Schema({
  name: {type: String, required: true},
  color: …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js typescript next.js

7
推荐指数
1
解决办法
1895
查看次数

标签 统计

javascript ×1

mongoose ×1

next.js ×1

node.js ×1

typescript ×1