首页 > 解决方案 > Mongoose Typescript 2 Schema 有一个使用其他模式的字段

问题描述

我正在尝试使用 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 只是一个没有字段的空模式。

标签: node.jstypescriptmongodbmongooseschema

解决方案


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

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

推荐阅读