Mongoose Typescript 2 Schema 有一个使用其他模式的字段

Posted

技术标签:

【中文标题】Mongoose Typescript 2 Schema 有一个使用其他模式的字段【英文标题】:Mongoose Typescript 2 Schema that have a field that use each other schemas 【发布时间】:2021-09-05 09:36:26 【问题描述】:

我正在尝试使用 mongoose 和 typescript 声明 2 个模式,它们都有一个字段,它们的类型是另一个模式,如下所示:

const Schema1: Schema = new Schema(
    fieldA: Number,
    fieldB: Schema2

;

const Schema2: Schema = new Schema(
    fieldA : Number,
    fieldB : Schema1

;

问题是我得到一个错误,因为 Schema1 的 fieldB 上的 Schema2 在被分配之前正在被使用。

我之前已经尝试过声明它:

var Schema2: Schema = new Schema();

但是,当向数据库添加值时,Schema2 只是一个没有字段的空模式。

【问题讨论】:

你想完成什么?它看起来像一个循环关系。 【参考方案1】:

我认为您不能像这样创建子文档。根据docs,您可以创建子文档数组和单个子文档。并且他们始终保持着亲子关系。 在您的情况下,如果您想使用子文档,您必须先声明它。因此,在 schema1 中,您已将 schema2 声明为子文档(子文档),但它在下面被引用。结构是

|--mongoose-schema
|--- children subdocument
|---- parent schema

【讨论】:

【参考方案2】:

我发现你可以在定义后将字段添加到架构中,如下所示:

Schema1.add( fieldB: Schema2 );

【讨论】:

以上是关于Mongoose Typescript 2 Schema 有一个使用其他模式的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在nestjs mongoose typescript中引用嵌套文档

使用`let cached = global.mongoose`时出现Next.js + Typescript + mongoose错误

使用 Typescript 从 Mongoose 模型访问文档属性

typescript 使用TypeScript和MongoDb的Mongoose示例

typescript 使用TypeScript和MongoDb的Mongoose示例

typescript 使用TypeScript和MongoDb的Mongoose示例