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示例